1

我的字符串看起来像

txt = '"EMB","iShares J,P. Morg",110.81,N/A'

strsplit(txt,',');用来根据逗号分隔符将其分解为单独的字符串。但是我想忽略 the'J'和之间的逗号'P',因为它不是分隔符;它只是名称的一部分。

有没有办法可以说“如果逗号在两个引号之间,但引号之间还有其他字符,请删除逗号”?

4

2 回答 2

2

这是一个等效regexp的单线:

C = regexp(txt, '("[^"]*")|([^,"]+)', 'match')

结果是一个已拆分字符串的元胞数组。不幸的是,我没有 MATLAB R2013,所以我无法将此与strsplit.

于 2013-07-17T16:04:38.707 回答
1

一个愚蠢(但实用)的答案:

inquotes=false;
keep=true(1,length(txt));
for v=1:length(txt)
    if (txt(v)=='"')
        inquotes=~inquotes;
    elseif (txt(v)==',' && inquotes)
        keep(v)=false;
    end
end
txt=txt(keep);
tt=strsplit(txt,',');

如果您在引号中,这将删除逗号,以便您可以使用 strsplit。这就是我理解你想要做的,对吗?

于 2013-07-17T15:32:21.667 回答