ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

strsplit

指定した区切り記号で文字列を分割

構文

  • C = strsplit(str)
  • C = strsplit(str,delimiter)
  • C = strsplit(str,delimiter,Name,Value)
  • [C,matches] = strsplit(___)

説明

C = strsplit(str) は文字ベクトル str を空白の位置で分割し、文字ベクトルのセル配列 C に格納します。空白文字は、{' ','\f','\n','\r','\t','\v'} セットの任意のシーケンスと同等です。

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

C = strsplit(str,delimiter,Name,Value) は、1 つまたは複数の名前と値のペアの引数を使用して追加の区切り記号オプションを使用します。

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

すべて折りたたむ

str = 'The rain in Spain.';
C = strsplit(str)
C = 

    'The'    'rain'    'in'    'Spain.'

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

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

data = '1.21, 1.985, 1.955, 2.015, 1.885';
C = strsplit(data,', ')
C = 

    '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 = 

    '1.21'    '1.985'    '1.955'    '2.015'    '1.885'    ''


matches = 

    'm/s'    'm/s '    ' m/s'    ' m/s '    'm/s'

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

myPath = 'C:\work\matlab';
C = strsplit(myPath,'\')
C = 

    'C:'    'work'    'matlab'

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

str = 'The rain in Spain stays mainly in the plain.';
[C,matches] = strsplit(str,{' ','ain'},'CollapseDelimiters',true)
C = 

  Columns 1 through 9

    'The'    'r'    'in'    'Sp'    'stays'    'm'    'ly'    'in'    'the'

  Columns 10 through 11

    'pl'    '.'


matches = 

  Columns 1 through 9

    ' '    'ain '    ' '    'ain '    ' '    'ain'    ' '    ' '    ' '

  Column 10

    'ain'

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

[C,matches] = strsplit(str,{'\s','ain'},'CollapseDelimiters',...
    false, 'DelimiterType','RegularExpression')
C = 

  Columns 1 through 10

    'The'    'r'    ''    'in'    'Sp'    ''    'stays'    'm'    'ly'    'in'

  Columns 11 through 13

    'the'    'pl'    '.'


matches = 

  Columns 1 through 10

    ' '    'ain'    ' '    ' '    'ain'    ' '    ' '    'ain'    ' '    ' '

  Columns 11 through 12

    ' '    'ain'

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

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

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

    'bacon'    'lettuce'    'and tomato'


matches = 

    ', '    ', '

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

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

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

    'bacon'    'lettuce'    'tomato'


matches = 

    ', '    ', and '

入力引数

すべて折りたたむ

入力テキスト。文字ベクトルとして指定します。

データ型: char

区切り記号。文字ベクトルまたは 1 行 n 列の文字ベクトルのセル配列として指定します。delimiter に指定された文字ベクトルは、出力 C に現れません。

文字ベクトルのセル配列に複数の区切り記号を指定します。セル配列の各要素には、文字ベクトルが含まれていなければなりません。関数 strsplitstrdelimiter の要素で分割します。delimiter での区切り記号の出現順序が重要となるのは、複数の区切り記号の始まりが str 内の同じ文字に一致する場合のみです。そのような場合、strsplitdelimiter 内の最初に一致する区切り記号で文字列を分割します。

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

\\

バックスラッシュ

\0

ヌル

\a

アラーム

\b

バックスペース

\f

フォーム フィード

\n

改行

\r

キャリッジ リターン

\t

水平タブ

\v

垂直タブ

例: ','

例: {'-',','}

データ型: char | cell

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

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

すべて折りたたむ

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

例: 'CollapseDelimiters',true

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

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

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

出力引数

すべて折りたたむ

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

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

参考

| |

R2013a で導入

この情報は役に立ちましたか?