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

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

4 Comments

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

Sign in to comment.

Answers (0)

Categories

Asked:

on 13 Apr 2020

Commented:

on 14 Apr 2020

Community Treasure Hunt

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

Start Hunting!