我的字符串看起来像
txt = '"EMB","iShares J,P. Morg",110.81,N/A'
我正在使用strsplit(txt,',');
将其分解为基于逗号分隔符的单独字符串。但是我想忽略'J'
和'P'
之间的逗号,因为它不是分隔符;它只是名称的一部分。
有没有办法可以说“如果逗号在两个引号之间,但引号之间还有其他字符,请删除逗号”?
答案 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。这就是我理解你想做的,对吗?