次のような文字列があります
txt = '"EMB","iShares J,P. Morg",110.81,N/A'
strsplit(txt,',');
コンマ区切り文字に基づいて、これを個別の文字列に分割するために使用しています。ただし、区切り記号ではないため、'J'
との間のコンマは無視したいと思います。'P'
名前の一部にすぎません。
「カンマが 2 つの引用符の間にあり、引用符の間に他の文字がある場合は、カンマを削除してください」と言う方法はありますか?
同等の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 を使用できるようになります。それがあなたのやりたいことだと理解しましたよね?