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

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

댓글 수: 4

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

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

도움말 센터File Exchange에서 文字と文字列에 대해 자세히 알아보기

태그

질문:

2020년 4월 13일

댓글:

2020년 4월 14일

Community Treasure Hunt

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

Start Hunting!