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

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

4 Commenti

Akira Agata
Akira Agata il 13 Apr 2020
関数 strsplit を使って、dd = strsplit(line,"\t"); とされるのは如何でしょうか?
Takeshi Hashimoto
Takeshi Hashimoto il 13 Apr 2020
ありがとうございます.
strsplitで試したところ,うまく分割されました.
Mathworksのstrsplit関数のヘルプページに,「R2016b 以降、string 配列の要素を分割するには関数 split を使用することを推奨します。」と書かれていたため,splitを使った方がよいのかと勘違いしていました.
助かりました.
Akira Agata
Akira Agata il 13 Apr 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 il 14 Apr 2020
ありがとうございました.当面はstrsplitを使うことにしようと思います.

Accedi per commentare.

Risposte (0)

Categorie

Community Treasure Hunt

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

Start Hunting!