split

区切り記号での string の分割

ページ内をすべて折りたたむ

説明

newStr = split( str ) str を空白文字の位置で分割し、結果を出力配列 newStr として返します。入力配列 str には、string 配列、文字ベクトル、文字ベクトルの cell 配列を指定できます。 str が string 配列の場合、 newStr も string 配列です。それ以外の場合、 newStr は文字ベクトルの cell 配列です。 newStr には str の空白文字は含まれません。

str が string 配列または文字ベクトルの cell 配列で、複数の要素をもつ場合、各要素は同じ数の部分文字列に分割可能でなければなりません。

  • str が string スカラーまたは文字ベクトルの場合、 newStr N 1 列の string 配列または文字ベクトルの cell 配列 ( N は部分文字列の数) です。

  • str M 1 列の string 配列または cell 配列の場合、 newStr M N 列の配列となります。

  • str 1 M 列の string 配列または cell 配列の場合、 newStr 1 × M × N の配列となります。

任意のサイズの string 配列または cell 配列について、 split N 個の部分文字列を、サイズが 1 である最初の後続次元に沿って配置します。

str のすべての要素で部分文字列の数が同じではない場合、 for ループで split を呼び出して、 str の要素を一度に 1 つずつ分割します。

newStr = split( str , delimiter ) は、 delimiter で指定した区切り記号で str の各要素を分割します。出力 newStr は区切り記号を含みません。

newStr = split( str , delimiter , dim ) は、 str の各要素を dim で指定された次元に沿ってベクトルに分割します。

[ newStr , match ] = split( ___ ) は、配列 match も返します。これには関数 split str を分割する区切り記号のすべての出現箇所が含まれます。この構文では、前述の構文の入力引数のいずれかを使用できます。

すべて折りたたむ

string 配列内の名前を空白文字の位置で分割します。姓が名の前になるように、string を並べ替えてから結合します。

名前を含む 3 行 1 列の string 配列を作成します。

names = ["Mary Butler";
         "Santiago Marquez";
         "Diana Lee"]
names = 3x1 string
    "Mary Butler"
    "Santiago Marquez"
    "Diana Lee"

names を空白文字の位置で分割し、3 行 2 列の string 配列にします。

names = split(names)
names = 3x2 string
    "Mary"        "Butler" 
    "Santiago"    "Marquez"
    "Diana"       "Lee"    

姓が最初の列になるように、 names の列を切り替えます。それぞれの姓の後にコンマを追加します。

names = [names(:,2) names(:,1)];
names(:,1) = names(:,1) + ','
names = 3x2 string
    "Butler,"     "Mary"    
    "Marquez,"    "Santiago"
    "Lee,"        "Diana"   

姓と名を結合します。関数 join は、結合する string の間に空白文字を配置します。結合後、 names は 3 行 1 列の string 配列になります。

names = join(names)
names = 3x1 string
    "Butler, Mary"
    "Marquez, Santiago"
    "Lee, Diana"

フォルダーのパスを含む string を作成します。

myPath = "/Users/jdoe/My Documents/Examples"
myPath = 
"/Users/jdoe/My Documents/Examples"

パスを / 文字の位置で分割します。 split myFolders を 5 行 1 列の string 配列として返します。最初の string は "" です。これは、 myPath / 文字で始まるためです。

myFolders = split(myPath,"/")
myFolders = 5x1 string
    "Users"
    "jdoe"
    "My Documents"
    "Examples"

\ を区切り記号として myFolders を新しいパスに結合します。パスの始めとして C: を追加します。

myNewPath = join(myFolders,"\");
myNewPath = 'C:' + myNewPath
myNewPath = 
"C:\Users\jdoe\My Documents\Examples"

R2020b 以降

テキストを区切り記号として扱うことで、文字列から数値を取得します。テキストに一致するパターンを使用します。次に、数値を加算します。

最初に、数値が含まれる文字列を作成します。

str = "10 apples 3 bananas and 5 oranges"
str = 
"10 apples 3 bananas and 5 oranges"

次に、空白文字または文字に一致するパターンを作成します。

pat = " " | lettersPattern
pat = pattern
  Matching:
    " " | lettersPattern

pat を区切り記号として使用して文字列を分割します。空の文字列は、空白と文字のシーケンスの間で分割されていて、その間には何もないことを表します。たとえば、 "10 apples" では、区切り記号 " " の前、つまり " " "apples" の間に分割があります。区切り記号 " " "apples" の間に何もないため、関数 split は空の string を返して、それらの間に何もないことを示します。

N = split(str,pat)
N = 11x1 string

空の string を破棄し、数値を表す部分文字列を保持します。

N = N(strlength(N) > 0)
N = 3x1 string

最後に、 N を数値配列に変換し、それを合計します。

N = str2double(N);
sum(N)
ans = 18

pattern オブジェクトを作成する関数の一覧については、 pattern を参照してください。

string を作成します。

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"

str を感嘆符と空白文字の位置で分割します。 newStr は 10 行 1 列の string 配列です。最後の string は空の string "" です。これは、 str の最後の文字が区切り記号であるためです。

newStr = split(str,[" ","!"])
newStr = 12x1 string
    "horse"
    "horse"
    "kingdom"
    "for"
    "horse"

患者に関するコンマ区切りのデータが各要素に含まれる string 配列を作成します。

patients = ["LastName,Age,Gender,Height,Weight";
            "Adams,47,F,64,123";
            "Jones,,,68,175";
            "King,,M,66,180";
            "Smith,38,F,63,118"]
patients = 5x1 string
    "LastName,Age,Gender,Height,Weight"
    "Adams,47,F,64,123"
    "Jones,,,68,175"
    "King,,M,66,180"
    "Smith,38,F,63,118"

string 配列を分割します。間に何もないコンマのペアは欠損データを示します。 split が区切り記号の繰り返し位置で分割を行うと、出力配列の対応する要素に空の string が返されます。

patients = split(patients,",")
patients = 5x5 string
    "LastName"    "Age"    "Gender"    "Height"    "Weight"
    "Adams"       "47"     "F"         "64"        "123"   
    "Jones"       ""       ""          "68"        "175"   
    "King"        ""       "M"         "66"        "180"   
    "Smith"       "38"     "F"         "63"        "118"   

名前を含む 3 行 1 列の string 配列を作成します。

names = ["Mary Butler";
         "Santiago Marquez";
         "Diana Lee"]
names = 3x1 string
    "Mary Butler"
    "Santiago Marquez"
    "Diana Lee"

配列を空白文字の位置で分割します。既定では、 split は出力部分文字列をサイズが 1 である最初の後続次元に沿って配置します。 names は 3 行 1 列の string 配列なので、 split は部分文字列を splitNames の 2 番目の次元 (つまり列) に沿って配置します。

splitNames = split(names)
splitNames = 3x2 string
    "Mary"        "Butler" 
    "Santiago"    "Marquez"
    "Diana"       "Lee"    

部分文字列を行 (つまり最初の次元) に沿って配置するには、区切り記号を指定した後で次元を指定します。 splitNames が 2 行 3 列の string 配列になり、1 行目に名、2 行目に姓が含まれます。

splitNames = split(names," ",1)
splitNames = 2x3 string
    "Mary"      "Santiago"    "Diana"
    "Butler"    "Marquez"     "Lee"  

string を作成します。

str = "bacon, lettuce, and tomato"
str = 
"bacon, lettuce, and tomato"

str を区切り記号で分割します。結果を string 配列に返し、区切り記号を 2 つ目の string 配列に返します。連続する区切り記号の間にテキストがない場合、 split は空の string を返します。

[newStr,match] = split(str,["and",","," "])
newStr = 7x1 string
    "bacon"
    "lettuce"
    "tomato"
match = 6x1 string
    "and"

関数 join newStr match を再び結合します。

originalStr = join(newStr,match)
originalStr = 
"bacon, lettuce, and tomato"

入力引数

すべて折りたたむ

入力テキスト。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。

区切りの部分文字列。次のいずれかとして指定します。

  • string 配列

  • 文字ベクトル

  • 文字ベクトルの cell 配列

  • pattern 配列 "( R2020b 以降)"

delimiter に指定した部分文字列は、出力 newStr に現れません。

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

例: split(str,{' ',',','--'}) は、 str を空白、コンマ、および連続するダッシュのペアのある位置で分割します。

文字列を分割する次元。正の整数として指定します。 dim が指定されない場合、既定値はサイズが 1 ではない最後の配列次元です。

出力引数

すべて折りたたむ

元の配列から分割された部分文字列。string 配列または文字ベクトルの cell 配列として返されます。入力配列 str が string 配列の場合、 newStr も string 配列です。それ以外の場合、 newStr は文字ベクトルの cell 配列です。

指定された区切り記号。string 配列または文字ベクトルの cell 配列として返されます。入力配列 str が string 配列の場合、 match も string 配列です。それ以外の場合、 match は文字ベクトルの cell 配列です。

match の要素の数は常に出力 newStr より 1 つ少なくなります。

拡張機能

バージョン履歴

R2016b で導入

次の MATLAB コマンドに対応するリンクがクリックされました。

コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。