6.3.4 Cell Arrays of Strings

Last-modified: 2025-03-21 (金) 21:15:39

6.3.4 文字列のセル配列

セル配列の一般的な使用法の 1 つは、同じ変数に複数の文字列を格納することです。各行を文字列にすることで、文字マトリックスに複数の文字列を格納することもできます。ただし、この方法では、すべての文字列の長さが同じでなければならないという問題が発生します。したがって、複数の文字列を格納するにはセル配列を使用することをお勧めします。操作に文字マトリックス表現が必要な場合、文字列のセル配列を文字配列に変換したり、その逆の変換を行う関数がいくつかあります。 charおよび は セル配列を文字配列に変換します ( 「文字列の連結」strvcatを参照)。一方、 関数は 文字配列を文字列のセル配列に変換します。 cellstr

a = ["hello"; "world"];
c = cellstr (a)
    ⇒ c =
        {
          [1,1] = hello
          [2,1] = world
        }

: cstr = cellstr (strmat)

文字列配列strmatの要素から新しいセル配列オブジェクトを作成します 。

strmatの各行はcstrの要素になります。行の末尾のスペースは変換前に削除されます。

cellstr から文字配列に戻すには、 を使用しますchar。
See also: cell, char.

セル配列を使用して複数の文字列を格納するもう 1 つの利点は、Octave に含まれる文字列操作用のほとんどの関数がこの表現をサポートしていることです。たとえば、strcmp関数を使用して 1 つの文字列を他の多くの文字列と比較することができます。この関数の引数の 1 つが文字列で、もう 1 つが文字列のセル配列である場合、セル配列の各要素が文字列引数と比較されます。

c = {"hello", "world"};
strcmp ("hello", c)
    ⇒ ans =
       1   0

次の文字列関数は、文字列のセル配列をサポートしています: 、、(文字列 charの連結を参照)、、、、、( 文字列内の検索を参照)strvcatstrcatstrcmpstrncmpstrcmpistrncmpistr2doubledeblankstrtrimstrtruncstrfindstrmatchregexpregexpistr2double( 文字列操作を参照)、および( 文字列の変換を参照)。

この関数は、iscellstrオブジェクトが文字列のセル配列であるかどうかをテストするために使用できます。

: tf = iscellstr (cell)

Return true if every element of the cell array cell is a character string.

See also: ischar, isstring.