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
xM
xN
の配列となります。
任意のサイズの string 配列または cell 配列について、split
は N
個の部分文字列を、サイズが 1
である最初の後続次元に沿って配置します。
str
のすべての要素で部分文字列の数が同じではない場合、for
ループで split
を呼び出して、str
の要素を一度に 1 つずつ分割します。
例
string を空白の位置で分割し、再結合
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 を区切り記号の位置で分割し、新しい区切り記号で再結合
フォルダーのパスを含む 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
"10"
""
""
"3"
""
""
""
""
"5"
""
""
空の string を破棄し、数値を表す部分文字列を保持します。
N = N(strlength(N) > 0)
N = 3x1 string
"10"
"3"
"5"
最後に、N
を数値配列に変換し、それを合計します。
N = str2double(N); sum(N)
ans = 18
pattern オブジェクトを作成する関数の一覧については、pattern
を参照してください。
string を複数の区切り記号の位置で分割
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
"A"
"horse"
""
"A"
"horse"
""
"My"
"kingdom"
"for"
"a"
"horse"
""
string 配列を区切り記号間にある欠損データの位置で分割
患者に関するコンマ区切りのデータが各要素に含まれる 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"
string を指定した次元に沿って配置
名前を含む 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 を分割して区切り記号を返す
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"
入力引数
str
— 入力テキスト
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
入力テキスト。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。
delimiter
— 区切りの部分文字列
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列 | pattern
配列 (R2020b 以降)
区切りの部分文字列。次のいずれかとして指定します。
string 配列
文字ベクトル
文字ベクトルの cell 配列
pattern
配列 "(R2020b 以降)"
delimiter
に指定した部分文字列は、出力 newStr
に現れません。
複数の区切り記号は、string 配列、文字ベクトルの cell 配列または pattern
配列で指定します。関数 split
は str
を delimiter
の要素で分割します。delimiter
での区切り記号の出現順序が重要となるのは、複数の区切り記号の始まりが str
内の同じ文字に一致する場合のみです。そのような場合、関数 split
は delimiter
内の最初に一致する区切り記号で文字列を分割します。
例: split(str,{' ',',','--'})
は、str
を空白、コンマ、および連続するダッシュのペアのある位置で分割します。
dim
— 文字列を分割する次元
正の整数
文字列を分割する次元。正の整数として指定します。dim
が指定されない場合、既定値はサイズが 1
ではない最後の配列次元です。
出力引数
newStr
— 元の配列から分割された部分文字列
string 配列 | 文字ベクトルの cell 配列
元の配列から分割された部分文字列。string 配列または文字ベクトルの cell 配列として返されます。入力配列 str
が string 配列の場合、newStr
も string 配列です。それ以外の場合、newStr
は文字ベクトルの cell 配列です。
match
— 指定された区切り記号
string 配列 | 文字ベクトルの cell 配列
指定された区切り記号。string 配列または文字ベクトルの cell 配列として返されます。入力配列 str
が string 配列の場合、match
も string 配列です。それ以外の場合、match
は文字ベクトルの cell 配列です。
match
の要素の数は常に出力 newStr
より 1 つ少なくなります。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2016b で導入
参考
join
| extract
| string
| newline
| compose
| splitlines
| pattern
| lettersPattern
| count
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)