5.3.3 Splitting and Joining Strings

Last-modified: 2025-03-21 (金) 20:35:00

5.3.3 文字列の分割と結合

: str = substr (s, offset)

: substr (s, offset, len)
v文字番号オフセットから始まり 、長さがlen文字であるsの部分文字列を返します。

オフセットの位置番号は 1 から始まります。オフセットが負の場合、抽出は文字列の末尾からその位置から始まります。

lenが省略された場合、部分文字列はsの末尾まで拡張されます。 lenに負の値を指定すると、文字列の末尾から len文字以内が抽出されます。

例:

substr ("This is a test string", 6, 9)
    ⇒ "is a test"
substr ("This is a test string", -11)
    ⇒ "test string"
substr ("This is a test string", -11, -7)
    ⇒ "test"

この関数は、Perl の同等の関数を模倣したものです。

: [tok, rem] = strtok (str)

: [tok, rem] = strtok (str, delim)

文字列str内の、文字列delimの最初の文字までの (ただし、その文字は含まない)すべての文字を検索します。

str は文字列のセル配列である場合もあります。その場合、関数は個々の文字列ごとに実行され、トークンと残りのセル配列を返します。

先頭の区切り文字は無視されます。delimが指定されていない場合は、空白文字と見なされます。

remが要求された場合、最初の区切り文字から始まる文字列の残りが含まれます。

例:

strtok ("this is the life")
    ⇒ "this"
[tok, rem] = strtok ("14*27+31", "+-*/")
    ⇒
       tok = 14
       rem = *27+31

See also: index, strsplit, strchr, isspace.

: [cstr] = strsplit (str)

: [cstr] = strsplit (str, del)

: [cstr] = strsplit (…, name, value)

: [cstr, matches] = strsplit (…)
delで指定された区切り文字を使用して文字列strを分割し、部分文字列のセル文字列配列を返します。

区切り文字が指定されていない場合、文字列は空白で分割されます {" ", "\f", "\n", "\r", "\t", "\v"}。それ以外の場合、区切り文字 del は文字列または文字列のセル配列である必要があります。デフォルトでは、入力文字列s内の連続する区切り文字は 1 つにまとめられ、単一の分割になります。

サポートされている名前/値のペア引数は次のとおりです。

true (デフォルト)またはの値をとることができる、collapsedelimitersfalse。
delimitertype"simple"は (デフォルト) またはの値を取ることができます"regularexpression"。単純な区切り文字は、記述されたとおりのテキストと一致します。それ以外の場合は、 で概説されている正規表現の構文がregexp使用されます。
オプションの 2 番目の出力matches は、元の文字列で一致した区切り文字を返します。

単純な区切り文字を使用した例:

strsplit ("a b c")
     ⇒
         {
           [1,1] = a
           [1,2] = b
           [1,3] = c
         }
strsplit ("a,b,c", ",")
     ⇒
         {
           [1,1] = a
           [1,2] = b
           [1,3] = c
         }
strsplit ("a foo b,bar c", {" ", ",", "foo", "bar"})
     ⇒
         {
           [1,1] = a
           [1,2] = b
           [1,3] = c
         }
strsplit ("a,,b, c", {",", " "}, "collapsedelimiters", false)
     ⇒
         {
           [1,1] = a
           [1,2] =
           [1,3] = b
           [1,4] =
           [1,5] = c
         }

正規表現区切り文字を使用した例:

strsplit ("a foo b,bar c", ',|\s|foo|bar', ...
         "delimitertype", "regularexpression")
⇒
{
           [1,1] = a
           [1,2] = b
           [1,3] = c
}
strsplit ("a,,b, c", '[, ]', "collapsedelimiters", false, ...
         "delimitertype", "regularexpression")
⇒
{
           [1,1] = a
           [1,2] =
           [1,3] = b
           [1,4] =
           [1,5] = c
}
strsplit ("a,\t,b, c", {',', '\s'}, "delimitertype", "regularexpression")
⇒
{
           [1,1] = a
           [1,2] = b
           [1,3] = c
}
strsplit ("a,\t,b, c", {',', ' ', '\t'}, "collapsedelimiters", false)
⇒
{
           [1,1] = a
           [1,2] =
           [1,3] =
           [1,4] = b
           [1,5] =
           [1,6] = c
}

See also: ostrsplit, strjoin, strtok, regexp.

: [cstr] = ostrsplit (s, sep)

: [cstr] = ostrsplit (s, sep, strip_empty)
1 つ以上の区切り文字sepを使用して文字列sを分割し、文字列のセル配列を返します。

連続する区切り文字および境界の区切り文字は、strip_emptyが true でない限り、空の文字列になります。strip_emptyのデフォルト値は false です。

2 次元文字配列は、区切り文字と元の列境界で分割されます。

例:

ostrsplit ("a,b,c", ",")
     ⇒
         {
           [1,1] = a
           [1,2] = b
           [1,3] = c
         }
ostrsplit (["a,b" ; "cde"], ",")
     ⇒
         {
           [1,1] = a
           [1,2] = b
           [1,3] = cde
         }

See also: strsplit, strtok.

: str = strjoin (cstr)

: str = strjoin (cstr, delimiter)

セル文字列配列cstrの要素を 1 つの文字列に結合します。

区切り文字が指定されていない場合、 cstrの要素はスペースで区切られます。

区切り文字が文字列として指定されている場合、セルの文字列配列は文字列を使用して結合されます。エスケープ シーケンスがサポートされています。

delimiter がcstrより 1 短い長さのセル文字列配列である 場合、 cstrの要素はdelimiterのセル文字列要素をインターリーブすることによって結合されます。エスケープ シーケンスはサポートされていません。

strjoin ({'Octave','Scilab','Lush','Yorick'}, '*')
     ⇒ 'Octave*Scilab*Lush*Yorick'
See also: strsplit.