Main Content

strsplit

指定した区切り記号で string または文字ベクトルを分割

説明

メモ

strsplit よりも split の方が、柔軟性に優れておりベクトル化を使用できるため推奨されます。詳細については、代替機能を参照してください。

C = strsplit(str) は、str を空白のある箇所で分割して C に出力します。空白文字は、{' ','\f','\n','\r','\t','\v'} セットの任意のシーケンスと同等です。

str に連続する空白文字がある場合、strsplit ではそれらを 1 つの空白として扱います。

C = strsplit(str,delimiter) は、delimiter によって指定された区切り記号で str を分割します。

str に連続する区切り記号があり、それらの間に他の文字がない場合、strsplit はそれらを 1 つの区切り文字として扱います。たとえば、strsplit('Hello,world',',')strsplit('Hello,,,world',',') はどちらも同じ出力を返します。

C = strsplit(str,delimiter,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して追加の区切り記号オプションを指定します。たとえば、連続する区切り文字を個別の区切り記号として扱うには、'CollapseDelimiters',false を指定できます。

[C,matches] = strsplit(___) は、さらに配列 matches も返します。matches 出力引数には、strsplitstr を分割する区切り記号のすべての出現が含まれます。この構文では、前述の構文の入力引数のいずれかを使用できます。

すべて折りたたむ

str = 'The rain in Spain.';
C = strsplit(str)
C = 1x4 cell
    {'The'}    {'rain'}    {'in'}    {'Spain.'}

C は 4 つの文字ベクトルを含む cell 配列です。

コンマ区切り値を格納した文字ベクトルを分割します。

data = '1.21, 1.985, 1.955, 2.015, 1.885';
C = strsplit(data,', ')
C = 1x5 cell
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}

文字ベクトル data を分割します。この文字ベクトルには、単位 m/s と、そのテキストの両側に任意の数の空白が含まれています。正規表現 \s* は、0 回以上発生する任意の空白文字と一致します。

data = '1.21m/s1.985m/s 1.955 m/s2.015 m/s 1.885m/s';
[C,matches] = strsplit(data,'\s*m/s\s*',...
    'DelimiterType','RegularExpression')
C = 1x6 cell
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}    {0x0 char}

matches = 1x5 cell
    {'m/s'}    {'m/s '}    {' m/s'}    {' m/s '}    {'m/s'}

この場合、C の最後の文字ベクトルは空です。この空の文字ベクトルは、最後に一致した区切り記号の後に続きます。

myPath = 'C:\work\matlab';
C = strsplit(myPath,'\')
C = 1x3 cell
    {'C:'}    {'work'}    {'matlab'}

複数の区切り記号を 1 つとして扱って、' ''ain' で文字ベクトルを分割します。文字ベクトルの cell 配列に複数の区切り記号を指定します。

str = 'The rain in Spain stays mainly in the plain.';
[C,matches] = strsplit(str,{' ','ain'},'CollapseDelimiters',true)
C = 1x11 cell
    {'The'}    {'r'}    {'in'}    {'Sp'}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x10 cell
    {' '}    {'ain '}    {' '}    {'ain '}    {' '}    {'ain'}    {' '}    {' '}    {' '}    {'ain'}

正規表現を使用し、複数の区切り記号を個別に扱って、同じ文字ベクトルを空白と 'ain' で分割します。

[C,matches] = strsplit(str,{'\s','ain'},'CollapseDelimiters',...
    false, 'DelimiterType','RegularExpression')
C = 1x13 cell
    {'The'}    {'r'}    {0x0 char}    {'in'}    {'Sp'}    {0x0 char}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x12 cell
    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {' '}    {'ain'}

この場合、strsplit は 2 つの区切り記号を個別に扱うため、出力 C の連続して一致する区切り記号の間に空の文字ベクトルが現れます。

文字ベクトル ', ' および ', and ' でテキストを分割します。

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', ',', and '})
C = 1x3 cell
    {'bacon'}    {'lettuce'}    {'and tomato'}

matches = 1x2 cell
    {', '}    {', '}

このコマンドでは ', ' が最初にリストされ、', and '', ' が含まれているため、関数 strsplit は最初の区切り記号で str を分割し、2 番目の区切り記号には進みません。

区切り記号の順序を逆にすると、', and ' が優先されます。

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', and ',', '})
C = 1x3 cell
    {'bacon'}    {'lettuce'}    {'tomato'}

matches = 1x2 cell
    {', '}    {', and '}

入力引数

すべて折りたたむ

入力テキスト。文字ベクトルまたは string スカラーとして指定します。

データ型: char | string

区切り記号。文字ベクトル、1n 列の文字ベクトルの cell 配列、または 1n 列の string 配列として指定します。delimiter で指定されたテキストは、出力 C に表示されません。

複数の区切り記号は、cell 配列または string 配列内に指定します。関数 strsplitstrdelimiter の要素で分割します。delimiter での区切り記号の出現順序が重要となるのは、複数の区切り記号の始まりが str 内の同じ文字に一致する場合のみです。そのような場合、strsplitdelimiter 内の最初に一致する区切り記号で文字列を分割します。

delimiter には、以下のエスケープ シーケンスを含めることができます。

\\

バックスラッシュ

\0

ヌル

\a

アラーム

\b

バックスペース

\f

フォーム フィード

\n

改行

\r

キャリッジ リターン

\t

水平タブ

\v

垂直タブ

例: ','

例: {'-',','}

データ型: char | cell | string

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: 'DelimiterType','RegularExpression'strsplitdelimiter を正規表現として扱うように指示します。

複数の区切り記号の取り扱いは、'CollapseDelimiters'true または false で構成されるコンマ区切りのペアとして指定します。true の場合、str 内の連続した区切り記号は 1 つの区切り記号として扱われます。false の場合、連続した区切り記号は個別の区切り記号として扱われるため、一致する区切り記号の間は空の文字ベクトル '' 要素になります。

例: 'CollapseDelimiters',true

区切り記号の種類。'DelimiterType' と次の文字ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。

'Simple'strsplit は、エスケープ シーケンスを除く delimiter をリテラル テキストとして扱います。
'RegularExpression'strsplitdelimiter を正規表現として扱います。

いずれの場合も、delimiter にはエスケープ シーケンスを含めることができます。

出力引数

すべて折りたたむ

元の文字ベクトルの一部。文字ベクトルの cell 配列または string 配列として返されます。C の要素数は、常に matches に含まれる要素数より 1 つ多くなります。したがって、str が区切り記号で始まる場合、C の最初の要素には文字が含まれません。str が区切り記号で終わる場合、C の最後のセルには文字が含まれません。

指定された区切り記号。文字ベクトルの cell 配列または string 配列として返されます。matches の要素数は、常に出力 C に含まれる要素数より 1 つ少なくなります。str が文字ベクトルまたは文字ベクトルの cell 配列の場合、matches は cell 配列です。str が string 配列の場合、matches は string 配列です。

代替機能

strsplit を使用しているコードについて、代わりに split を使用するように更新します。split の既定の方向は列方向です。以下に例を示します。

非推奨推奨
str = strsplit("1 2 3")
str = 

  1×3 string array

    "1"    "2"    "3"
str = split("1 2 3")
str = 

  3×1 string array

    "1"
    "2"
    "3"

拡張機能

バージョン履歴

R2013a で導入