我的字符串看起来像
txt = '"EMB","iShares J,P. Morg",110.81,N/A'
我strsplit(txt,',');
用来根据逗号分隔符将其分解为单独的字符串。但是我想忽略 the'J'
和之间的逗号'P'
,因为它不是分隔符;它只是名称的一部分。
有没有办法可以说“如果逗号在两个引号之间,但引号之间还有其他字符,请删除逗号”?
这是一个等效regexp
的单线:
C = regexp(txt, '("[^"]*")|([^,"]+)', 'match')
结果是一个已拆分字符串的元胞数组。不幸的是,我没有 MATLAB R2013,所以我无法将此与strsplit
.
一个愚蠢(但实用)的答案:
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。这就是我理解你想要做的,对吗?