split関数でタブ区切りを分割できない

タブ区切りテキストファイルを読み込んで,split 関数で分割したいと考えています.
ためしに1行だけ読ませようとしましたが,うまく分割できません.
infile1='test.txt';
fid=fopen(infile1,'r');
line = fgetl(fid);
dd=split(line,"\t")
ddの結果は,1×1のcell配列となってしまいます.
タブをカンマやスペースに変えて,区切り子をそのように指定するとうまく分割できるのですが.
タブの場合だけうまくできません.
どのような原因が考えられますでしょうか?

4 commentaires

Akira Agata
Akira Agata le 13 Avr 2020
関数 strsplit を使って、dd = strsplit(line,"\t"); とされるのは如何でしょうか?
Takeshi Hashimoto
Takeshi Hashimoto le 13 Avr 2020
ありがとうございます.
strsplitで試したところ,うまく分割されました.
Mathworksのstrsplit関数のヘルプページに,「R2016b 以降、string 配列の要素を分割するには関数 split を使用することを推奨します。」と書かれていたため,splitを使った方がよいのかと勘違いしていました.
助かりました.
Akira Agata
Akira Agata le 13 Avr 2020
ご指摘のように、R2016b以降は関数 split が推奨されていますが、少なくとも今回の用途であれば今のところ strsplit でも問題ないと思います。
もしどうしても気になるようであれば、以下のような回避策があります。
split をそのまま使う方法
dd = split(line); % ddはN×1のセル配列として出力されます。
regexp を使う方法
dd = regexp(line,'\t','split'); % ddは1×Nのセル配列として出力されます。
split で \t を明示的に指定する方法
dd = split(line,sprintf('\t')); % ddはN×1のセル配列として出力されます。
Takeshi Hashimoto
Takeshi Hashimoto le 14 Avr 2020
ありがとうございました.当面はstrsplitを使うことにしようと思います.

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur 文字と文字列 dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!