split
区切り記号での string の分割
構文
説明
例
string 配列内の名前を空白文字の位置で分割します。姓が名の前になるように、string を並べ替えてから結合します。
名前を含む 3 行 1 列の string 配列を作成します。
names = ["Mary Butler"; "Santiago Marquez"; "Diana Lee"]
names = 3×1 string
"Mary Butler"
"Santiago Marquez"
"Diana Lee"
names を空白文字の位置で分割し、3 行 2 列の string 配列にします。
names = split(names)
names = 3×2 string
"Mary" "Butler"
"Santiago" "Marquez"
"Diana" "Lee"
姓が最初の列になるように、names の列を切り替えます。それぞれの姓の後にコンマを追加します。
names = [names(:,2) names(:,1)];
names(:,1) = names(:,1) + ','names = 3×2 string
"Butler," "Mary"
"Marquez," "Santiago"
"Lee," "Diana"
姓と名を結合します。関数 join は、結合する string の間に空白文字を配置します。結合後、names は 3 行 1 列の string 配列になります。
names = join(names)
names = 3×1 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 = 5×1 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 = " " | lettersPatternpat = pattern
Matching:
" " | lettersPattern
pat を区切り記号として使用して文字列を分割します。空の文字列は、空白と文字のシーケンスの間で分割されていて、その間には何もないことを表します。たとえば、"10 apples" では、区切り記号 " " の前、つまり " " と "apples" の間に分割があります。区切り記号 " " と "apples" の間に何もないため、関数 split は空の string を返して、それらの間に何もないことを示します。
N = split(str,pat)
N = 11×1 string
"10"
""
""
"3"
""
""
""
""
"5"
""
""
空の string を破棄し、数値を表す部分文字列を保持します。
N = N(strlength(N) > 0)
N = 3×1 string
"10"
"3"
"5"
最後に、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 = 12×1 string
"A"
"horse"
""
"A"
"horse"
""
"My"
"kingdom"
"for"
"a"
"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 = 5×1 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 = 5×5 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 = 3×1 string
"Mary Butler"
"Santiago Marquez"
"Diana Lee"
配列を空白文字の位置で分割します。既定では、split は出力部分文字列をサイズが 1 である最初の後続次元に沿って配置します。names は 3 行 1 列の string 配列なので、split は部分文字列を splitNames の 2 番目の次元 (つまり列) に沿って配置します。
splitNames = split(names)
splitNames = 3×2 string
"Mary" "Butler"
"Santiago" "Marquez"
"Diana" "Lee"
部分文字列を行 (つまり最初の次元) に沿って配置するには、区切り記号を指定した後で次元を指定します。splitNames が 2 行 3 列の string 配列になり、1 行目に名、2 行目に姓が含まれます。
splitNames = split(names," ",1)splitNames = 2×3 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 = 7×1 string
"bacon"
""
"lettuce"
""
""
""
"tomato"
match = 6×1 string
","
" "
","
" "
"and"
" "
関数 join で newStr と match を再び結合します。
originalStr = join(newStr,match)
originalStr = "bacon, lettuce, and tomato"
入力引数
入力テキスト。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。str が複数の要素をもつ配列の場合、各要素には同じ数の部分文字列が含まれている必要があります。
区切りの部分文字列。次のいずれかとして指定します。
string 配列
文字ベクトル
文字ベクトルの cell 配列
pattern配列 "(R2020b 以降)"
delimiter に指定した部分文字列は、出力 newStr に現れません。
複数の区切り記号は、string 配列、文字ベクトルの cell 配列または pattern 配列で指定します。関数 split は str を delimiter の要素で分割します。delimiter での区切り記号の出現順序が重要となるのは、複数の区切り記号の始まりが str 内の同じ文字に一致する場合のみです。そのような場合、関数 split は delimiter 内の最初に一致する区切り記号で文字列を分割します。
例: split(str,{' ',',','--'}) は、str を空白、コンマ、および連続するダッシュのペアのある位置で分割します。
出力部分文字列を配置する次元。正の整数として指定します。dim を指定しない場合、既定値はサイズが 1 である (入力配列 str の) 最初の後続次元です。
出力引数
元の配列から分割された部分文字列。string 配列または文字ベクトルの cell 配列として返されます。入力 str が string 配列の場合、newStr も string 配列です。それ以外の場合、newStr は文字ベクトルの cell 配列です。
newStr のサイズは、str のサイズと次元引数 dim に依存します。str が複数の要素をもつ配列の場合、各要素には同じ数の部分文字列 (N) が含まれている必要があります。既定の dim では、入力 str の各要素から分割された部分文字列は、サイズが 1 である str の最初の後続次元に沿って配置されます。
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の配列となります。strがM1行M2列の string 配列または cell 配列の場合、newStrはM1×M2×Nの配列となります。
指定された区切り記号。string 配列または文字ベクトルの cell 配列として返されます。入力配列 str が string 配列の場合、match も string 配列です。それ以外の場合、match は文字ベクトルの cell 配列です。
match の要素の数は常に出力 newStr より 1 つ少なくなります。
ヒント
strが string 配列または文字ベクトルの cell 配列で、各配列要素に同じ数の部分文字列が含まれていない場合は、forループで要素を 1 つずつ処理し、splitを各要素で個別に呼び出します。
拡張機能
split 関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
split 関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
split 関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2016b で導入
参考
join | extract | string | newline | compose | splitlines | pattern | lettersPattern | count
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)