1

次のような文字列があります

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

strsplit(txt,',');コンマ区切り文字に基づいて、これを個別の文字列に分割するために使用しています。ただし、区切り記号ではないため、'J'との間のコンマは無視したいと思います。'P'名前の一部にすぎません。

「カンマが 2 つの引用符の間にあり、引用符の間に他の文字がある場合は、カンマを削除してください」と言う方法はありますか?

4

2 に答える 2

2

同等のregexpワンライナーを次に示します。

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

結果は、既に分割された文字列を含むセル配列です。残念ながら、私は MATLAB R2013 を持っていないので、これと をベンチマークすることはできませんstrsplit

于 2013-07-17T16:04:38.707 に答える
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 を使用できるようになります。それがあなたのやりたいことだと理解しましたよね?

于 2013-07-17T15:32:21.667 に答える