split
在分隔符处拆分字符串
语法
说明
在空白字符处拆分 newStr
= split(str
)str
并以输出数组 newStr
的形式返回结果。输入数组 str
可以是字符串数组、字符向量或字符向量元胞数组。如果 str
是一个字符串数组,则 newStr
也是一个字符串数组。否则,newStr
为字符向量元胞数组。newStr
不包括 str
中的空白字符。
如果 str
是字符串数组或字符向量元胞数组,并且有多个元素,则每个元素必须可分成相同数量的子字符串。
如果
str
是一个字符串标量或字符向量,则newStr
是一个N
×1
字符串数组或字符向量元胞数组,其中N
是子字符串的数量。如果
str
是一个M
×1
字符串数组或元胞数组,则newStr
是一个M
×N
数组。如果
str
是一个1
×M
字符串数组或元胞数组,则newStr
是一个1
×M
×N
数组。
对于任意大小的字符串数组或元胞数组,split
沿大小为 1
的第一个尾部维度确定 N
个子字符串的方向。
如果 str
的每个元素的子字符串数量不相同,则在 for
循环中调用 split
,一次拆分 str
的一个元素。
示例
在空白处拆分字符串并重新联接
在空白字符处拆分字符串数组中的姓名。然后重新排序并联接这些字符串,使姓在名的前面。
创建一个包含姓名的 3×1 字符串数组。
names = ["Mary Butler"; "Santiago Marquez"; "Diana Lee"]
names = 3x1 string
"Mary Butler"
"Santiago Marquez"
"Diana Lee"
在空白字符处拆分 names
,使其成为一个 3×2 字符串数组。
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
函数在它联接的字符串之间放置一个空格字符。联接之后,names
是一个 3×1 字符串数组。
names = join(names)
names = 3x1 string
"Butler, Mary"
"Marquez, Santiago"
"Lee, Diana"
在分隔符处拆分字符串并用新的分隔符联接
创建一个包含文件夹路径的字符串。
myPath = "/Users/jdoe/My Documents/Examples"
myPath = "/Users/jdoe/My Documents/Examples"
在 /
字符处拆分路径。split
将以 5×1 字符串数组的形式返回 myFolders
。第一个字符串为 ""
,因为 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
函数返回空字符串来指示它们之间没有任何内容。
N = split(str,pat)
N = 11x1 string
"10"
""
""
"3"
""
""
""
""
"5"
""
""
丢弃空字符串,并保留表示数字的子字符串。
N = N(strlength(N) > 0)
N = 3x1 string
"10"
"3"
"5"
最后,将 N
转换为数值数组,并对其求和。
N = str2double(N); sum(N)
ans = 18
有关创建模式对象的函数列表,请参阅pattern
。
在多个分隔符处拆分字符串
创建一个字符串。
str = "A horse! A horse! My kingdom for a horse!"
str = "A horse! A horse! My kingdom for a horse!"
在感叹号和空白字符处拆分 str
。newStr
是一个 10×1 字符串数组。最后一个字符串为空字符串 ""
,因为 str
中的最后一个字符是分隔符。
newStr = split(str,[" ","!"])
newStr = 12x1 string
"A"
"horse"
""
"A"
"horse"
""
"My"
"kingdom"
"for"
"a"
"horse"
""
拆分分隔符之间缺失数据的字符串数组
创建一个字符串数组,其中每个元素包含一位患者的数据,数据之间以逗号分隔。
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"
拆分字符串数组。两个逗号之间什么也没有即表示缺失数据。如果 split
在拆分时遇到重复的分隔符,它会返回空字符串作为输出数组中的对应元素。
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 字符串数组。
names = ["Mary Butler"; "Santiago Marquez"; "Diana Lee"]
names = 3x1 string
"Mary Butler"
"Santiago Marquez"
"Diana Lee"
在空白字符处拆分数组。默认情况下,split
沿大小为 1 的第一个尾随维度定向输出子字符串。因为 names
是一个 3×1 字符串数组,所以 split
沿 splitNames
的第二个维度(即列)来定向子字符串。
splitNames = split(names)
splitNames = 3x2 string
"Mary" "Butler"
"Santiago" "Marquez"
"Diana" "Lee"
要沿行(即第一个维度)定向子字符串,请在指定分隔符之后指定维度。splitNames
现在是一个 2×3 字符串数组,名在第一行,姓在第二行。
splitNames = split(names," ",1)
splitNames = 2x3 string
"Mary" "Santiago" "Diana"
"Butler" "Marquez" "Lee"
拆分字符串并返回分隔符
创建一个字符串。
str = "bacon, lettuce, and tomato"
str = "bacon, lettuce, and tomato"
在分隔符处拆分 str
。在一个字符串数组中返回拆分结果,在第二个字符串数组中返回分隔符。当连续的分隔符之间没有任何文本时,split
将返回空字符串。
[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
— 输入文本
字符串数组 | 字符向量 | 字符向量元胞数组
输入文本,指定为字符串数组、字符向量或字符向量元胞数组。
delimiter
— 分隔子字符串
字符串数组 | 字符向量 | 字符向量元胞数组 | pattern
数组(自 R2020b 开始提供)
分隔子字符串,指定为下列值之一:
字符串数组
字符向量
字符向量元胞数组
pattern
数组(自 R2020b 开始提供)
在 delimiter
中指定的子字符串不会显示在输出 newStr
中。
在一个字符串数组、字符向量元胞数组或 pattern
数组中指定多个分隔符。split
函数根据 delimiter
的元素拆分 str
。分隔符在 delimiter
中显示的顺序无关紧要,除非有多个分隔符都从 str
中的同一字符处开始匹配。在这种情况下,split
函数将在 delimiter
中的第一个匹配分隔符处进行拆分。
示例: split(str,{' ',',','--'})
在出现空格、逗号和连续短划线对组的位置拆分 str
。
dim
— 拆分字符串时所沿的维度
正整数
拆分字符串时所沿的维度,指定为正整数。如果不指定 dim
,则默认值为大小不等于 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)