有选择地删除逗号和拆分字符串

时间:2013-07-17 15:22:27

标签: regex string matlab

我的字符串看起来像

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

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

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

2 个答案:

答案 0 :(得分:2)

这是一个等效的regexp单行:

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

结果是一个已经拆分字符串的单元格数组。不幸的是,我没有MATLAB R2013,因此我无法对此进行基准测试与strsplit

答案 1 :(得分: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。这就是我理解你想做的,对吗?