5.3.2 Concatenating Strings

Last-modified: 2025-03-21 (金) 20:33:17

5.3.2 文字列の連結

文字列は、行列表記法 (文字列、文字配列を参照) を使用して連結できます。これは、多くの場合最も自然な方法です。例:

fullname = [fname ".txt"];
email = ["<" user "@" domain ">"];

いずれの場合も、最終的な文字列がどのようになるかは簡単にわかります。この方法は最も効率的でもあります。行列連結を使用すると、パーサーは関数呼び出しのオーバーヘッドや関連する関数の入力検証を処理することなく、すぐに文字列の結合を開始します。

このnewline関数を使用すると、文字列を結合して、表示時に複数行のテキストとして表示することができます。

: c = newline

改行に対応する文字を返します。

This is equivalent to "\n".

Example Code

joined_string = [newline "line1" newline "line2"]
⇒
line1
line2

See also: strcat, strjoin, strsplit.

さらに、特定の状況で役立つ、文字列オブジェクトを連結するための関数がいくつかあります: 、、、charおよび 。最後に、汎用連結関数を使用できます: cat、 horzcat、およびvertcat を参照してください。 strvcatstrcatcstrcat

すべての文字列連結関数はcstrcat 、次の例のように、各要素 (またはマルチバイト シーケンス) に対応する UTF-8 文字を取得して、数値入力を文字データに変換します。

char ([98, 97, 110, 97, 110, 97])
  ⇒ banana

ロケール エンコーディングと UTF-8 間の変換については、 unicode2nativeおよび native2unicode を参照してください。

charと はstrvcat 垂直方向に連結され、strcatとはcstrcat水平方向に連結されます。例:

char ("an apple", "two pears")
   ⇒ an apple
      two pears
strcat ("oc", "tave", " is", " good", " for you")
    ⇒ octave is good for you

charは、入力内の空の文字列ごとに出力に空の行を生成します。 strvcat一方、は空の文字列を削除します。

char ("orange", "green", "", "red")
   ⇒ orange
      green
      red
strvcat ("orange", "green", "", "red")
   ⇒ orange
      green
      red

を除くすべての文字列連結関数は、cstrcatセル配列データも受け入れます (セル配列を参照)。 charは strvcatセル配列を文字配列に変換し、 はstrcat セル配列のセル内で連結します。

char ({"red", "green", "", "blue"})
    ⇒ red
       green
       blue
strcat ({"abc"; "ghi"}, {"def"; "jkl"})
    ⇒
       {
         [1,1] = abcdef
         [2,1] = ghijkl
       }

strcatは引数内の末尾の空白を削除します (セル配列内を除く)。cstrcat空白はそのまま残ります。例からわかるように、どちらの動作も便利です。

strcat (["dir1";"directory2"], ["/";"/"], ["file1";"file2"])
    ⇒ dir1/file1
       directory2/file2
cstrcat (["thirteen apples"; "a banana"], [" 5$";" 1$"])
     ⇒ thirteen apples 5$
        a banana        1$

上記の の例ではcstrcat、空白は文字列配列内の文字列の内部表現に由来することに注意してください ( 「文字配列」を参照)。

: C = char (A)

: C = char (A, …)

: C = char (str1, str2, …)

: C = char (cell_array)
1 つ以上の数値行列、文字行列、またはセル配列から文字列配列を作成します。

引数は垂直に連結されます。返される値は、文字列配列の各行が同じ長さになるように、必要に応じて空白で埋められます。空の入力文字列は意味を持ち、出力で連結されます。

数値入力の場合、各要素は対応する ASCII 文字に変換されます。入力が ASCII 範囲 (0 ~ 255) 外の場合、範囲エラーが発生します。

セル配列の場合、各要素は個別に連結されます。 を介して変換されたセル配列は、charほとんどの場合、 を使用して元に戻すことができます cellstr。例:

char ([97, 98, 99], "", {"98", "99", 100}, "str1", ["ha", "lf"])
  ⇒ ["abc "
      "    "
      "98  "
      "99  "
      "d   "
      "str1"
      "half"]

See also: strvcat, cellstr.

: C = strvcat (A)

: C = strvcat (A, …)

: C = strvcat (str1, str2, …)

: C = strvcat (cell_array)

1 つ以上の数値行列、文字行列、またはセル配列から文字配列を作成します。

引数は垂直に連結されます。返される値は、文字列配列の各行が同じ長さになるように、必要に応じて空白で埋められます。とは異なりchar、空の文字列は削除され、出力には表示されません。

数値入力の場合、各要素は対応する ASCII 文字に変換されます。入力が ASCII 範囲 (0 ~ 255) 外の場合、範囲エラーが発生します。

セル配列の場合、各要素は個別に連結されます。 を介して変換されたセル配列は、strvcatほとんどの場合、 を使用して元に戻すことができます cellstr。例:

strvcat ([97, 98, 99], "", {"98", "99", 100}, "str1", ["ha", "lf"])
     ⇒ ["abc "
         "98  "
         "99  "
         "d   "
         "str1"
         "half"]

See also: char, strcat, cstrcat.

: str = strcat (s1, s2, …)

すべての引数を水平に連結した文字列を返します。

引数がセル文字列の場合、strcat個々のセルを連結したセル文字列を返します。数値入力の場合、各要素は対応する ASCII 文字に変換されます。文字列入力の末尾の空白は、文字列が連結される前に削除されます。セル文字列値では空白が削除されないことに注意してください。

例えば:

strcat ("|", " leading space is preserved", "|")
   ⇒ | leading space is preserved|
strcat ("|", "trailing space is eliminated ", "|")
   ⇒ |trailing space is eliminated|
strcat ("homogeneous space |", "  ", "| is also eliminated")
   ⇒ homogeneous space || is also eliminated
s = [ "ab"; "cde" ];
strcat (s, s, s)
   ⇒
       "ababab   "
       "cdecdecde"
s = { "ab"; "cd " };
strcat (s, s, s)
   ⇒
       {
         [1,1] = ababab
         [2,1] = cd cd cd
       }

See also: cstrcat, char, strvcat.

: str = cstrcat (s1, s2, …)

末尾の空白を保持したまま水平に連結されたすべての引数を含む文字列を返します。

例えば:

cstrcat ("ab   ", "cd")
     ⇒ "ab   cd"
s = [ "ab"; "cde" ];
cstrcat (s, s, s)
     ⇒ "ab ab ab "
        "cdecdecde"

See also: strcat, char, strvcat.