文字列の操作

文字列の置換

strrepを使えば正規表現も含めて大体いける.
strという文字列から空白やタブを詰めたい時は,

str = strrep(str,' ','');
str = strrep(str,'\t','');

単純に先頭または末尾の空白を詰めたい時は

str = strtrim(str)

の方が良い.

文字列の検出

ある文字列keywordがあるかないか確認する.

if ~isempty(strfind(str,keyword))
    disp('ある')
else
    disp('ない')
end

keywordの文字列が含まれている場合は,strfindはインデックスを返す.

文字列の一致判定

if strcmp(str,keyword)
    disp('strとkeywordは一致する')
else
    disp('strとkeywordは一致しない')
end

文字列の連続生成

repmatを使う.ある文字列strを行方向にn個並んだ連続で作成したければ

repmat(str,[n 1])

またテキストファイルへのアウトプットで改行を含むときは,改行(\n)をもとに列方向へのrepmatが使える.

format_1 = repmat('%f\n',[1 n])

文字列の分割

  1. Delimiter(区切り文字)ごとに分割するとき
    strsplitを使う.
    全ての行をループを使わずに一括で変換する方法は不明.
    下記のstrという文字列それぞれ単語ごとに分けたいとすると,空白区切りなので
    str = 'aaa bbb ccc';
    str = strsplit(str,' ');
    2つめの引数はDelimiterを指す.
    str自体がセルの時は,charかcell2matで単なるchar配列に変換しておく.
    str = strsplit(char(str),' ');
  2. 一定の文字間隔(カラム)で分割するとき
    reshapeを使う.
    下記のstrを,空白も含めて3文字ずつに分割したいとする.
    str = 'aaa   bbb   ccc';
    str = reshape(str,3,[])';
    行列の転置記号(')を忘れずに.
    この処理で,strは以下のように,3文字ずつ(5x3のchar配列)に変換できる.
    str =
    'aaa'
    '   '  
    'bbb'
    '   '  
    'ccc'

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2017-12-18 (Mon) 08:18:57 (519d)