我有絃樂,看起來像選擇性地刪除逗號和分割字符串
txt = '"EMB","iShares J,P. Morg",110.81,N/A'
我使用strsplit(txt,',');
打入基於逗號和單獨字符串這一點。但是我想忽略'J'
和'P'
之間的逗號,因爲它不是分隔符;它只是名字的一部分。
有沒有一種方法可以說「如果逗號是在兩個引號之間,但引號之間還有其他字符,請刪除逗號」?
我有絃樂,看起來像選擇性地刪除逗號和分割字符串
txt = '"EMB","iShares J,P. Morg",110.81,N/A'
我使用strsplit(txt,',');
打入基於逗號和單獨字符串這一點。但是我想忽略'J'
和'P'
之間的逗號,因爲它不是分隔符;它只是名字的一部分。
有沒有一種方法可以說「如果逗號是在兩個引號之間,但引號之間還有其他字符,請刪除逗號」?
是一個愚蠢的(但功能)答案:
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。那是我理解你想要做的,對嗎?
下面是一個等效regexp
單行:
C = regexp(txt, '("[^"]*")|([^,"]+)', 'match')
其結果是一個單元陣列與已分割的字符串。不幸的是,我沒有MATLAB R2013,所以我不能和strsplit
進行比較。
等待一個懂得正則表達式的人,我確定有。 –
謝謝休!同時我會看看正則表達式。 – siegel