ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

文字配列の作成

文字列の作成

次のように、文字の列を単一引用符で囲んで、文字列を作成します。

myString = 'Hello, world';

テキストに単一引用符が含まれている場合は、文字列の定義内に 2 つの引用符を含めるようにします。

otherString = 'You''re right';

MATLAB® の計算環境ではすべての変数が配列であり、文字列は char 型 (文字配列) となります。

whos myString
Name          Size            Bytes  Class    Attributes

myString      1x12               24  char               

uint16 などの関数では、文字が対応する数値コードに変換されます。

str_numeric = uint16(str)
str_numeric =
   72  101  108  108  111

関数 char では、整数ベクトルが文字に変換されます。

str_alpha = char([72 101 108 108 111])
str_alpha =
   Hello

四角形の文字配列の作成

複数の文字列を結合して、新しい文字配列を作成することができます。これは、"連結" と呼ばれます。「行列の連結」の節では、数値配列の連結について説明してあります。数値配列と同様に、文字配列を横または縦のどちらの方向に結合しても新しい文字配列を作成できます。

代わりに、セル配列に文字列を結合することもできます。セル配列は、さまざまな長さの文字列を簡単に結合できる柔軟なコンテナーです。

文字列の縦方向の結合

文字列を 2 次元文字配列に結合するには、次のいずれかの方法を使用します。

  • MATLAB の連結演算子 [] を使用します。複数の行はセミコロン (;) で区切ります。各行には、同じ数の文字が含まれなければなりません。たとえば、同じ長さの 3 つの文字列を結合するには、次のようにします。

    dev_title = ['Thomas R. Lee'; ...
                 'Sr. Developer'; ...
                 'SFTware Corp.'];
    

    文字列の長さが異なる場合は、必要に応じて空白文字を付加します。以下に例を示します。

    mgr_title = ['Harold A. Jorgensen      '; ...
                 'Assistant Project Manager'; ...
                 'SFTware Corp.            '];
    
  • 関数 char を呼び出します。文字列の長さが異なると、各行が同じ文字数になるように char によって短い文字列の末尾に空白文字が付加されます。たとえば、異なる長さの 3 つの文字列を結合するには、次のようにします。

    mgr_title = char('Harold A. Jorgensen', ...
       'Assistant Project Manager', 'SFTware Corp.');

    関数 char は、3 行 25 列の文字配列 mgr_title を作成します。

文字列の横方向の結合

文字列を単一行ベクトルに結合するには、次のいずれかの方法を使用します。

  • MATLAB の連結演算子 [] を適用します。入力文字列をコンマまたはスペースで区切ります。この方法では、入力配列に含まれる末尾のスペースが保持されます。たとえば、複数の文字列を結合するには、次のようにします。

    name =    'Thomas R. Lee';
    title =   'Sr. Developer';
    company = 'SFTware Corp.';
    
    full_name = [name ', ' title ', ' company]

    MATLAB は、以下を返します。

    full_name =
      Thomas R. Lee, Sr. Developer, SFTware Corp.
  • 文字列連結関数 strcat を呼び出します。この方法では、入力に含まれる末尾のスペースが削除されます。たとえば、文字列を結合して仮想の電子メール アドレスを作成するには、次のようにします。

    name   = 'myname   ';
    domain = 'mydomain ';
    ext    = 'com      ';
    
    address = strcat(name, '@', domain, '.', ext)

    MATLAB は、以下を返します。

    address =
      myname@mydomain.com

文字列内の文字の識別

文字または文字列、あるいは文字列内の特定の文字を識別するには、次の関数のいずれかを使用します。

関数説明
ischar入力が文字配列かどうかを判定
isletter入力文字列にあるすべてのアルファベットを検出
isspace入力文字列にあるすべての空白文字を検出
isstrprop特定のカテゴリのすべての文字を検出

str = 'Find the space characters in this string';
%          |   |     |          |  |    |       
%          5   9    15         26 29   34

find(isspace(str))
ans =
     5     9    15    26    29    34

空白文字の扱い

関数 blanks では、空白で構成される文字列が作成されます。以下の例では、15 個のスペースからなる文字列を作成します。

s = blanks(15)
s = 
               

わかりやすい例にするために、空白文字列の最初と最後に '|' を追加して、出力を表示するようにします。

['|' s '|']         % Make result visible.
ans =
   |               |

空白の文字列の中にスペース以外の文字をいくつか挿入します。

s(6:10) = 'AAAAA';

['|' s '|']         % Make result visible.
ans =
   |     AAAAA     |

関数 strjust を使用して、これらの文字の位置を揃えることができます。

sLeft = strjust(s, 'left');

['|' sLeft '|']         % Make result visible.
ans =
   |AAAAA          |

sRight = strjust(s, 'right');

['|' sRight '|']         % Make result visible.
ans =
   |          AAAAA|

deblank を使用して、最後のスペースを削除します。

sDeblank = deblank(s);

['|' sDeblank '|']         % Make result visible.
ans =
   |     AAAAA|

strtrim を使用して、前後のすべてのスペースを削除します。

sTrim = strtrim(s);

['|' sTrim '|']         % Make result visible.
ans =
   |AAAAA|

文字配列の拡大

一般に、MathWorks® は、配列の一部を 0 で埋めたり、配列の範囲を超えたインデックスに文字を追加して割り当てることによって、既存の文字配列のサイズを拡張することを推奨いたしません。

この情報は役に立ちましたか?