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.