split
在分隔符处拆分字符串
语法
说明
示例
在空白字符处拆分字符串数组中的姓名。然后重新排序并联接这些字符串,使姓在名的前面。
创建一个包含姓名的 3×1 字符串数组。
names = ["Mary Butler"; "Santiago Marquez"; "Diana Lee"]
names = 3×1 string
"Mary Butler"
"Santiago Marquez"
"Diana Lee"
在空白字符处拆分 names,使其成为一个 3×2 字符串数组。
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 函数在它联接的字符串之间放置一个空格字符。联接之后,names 是一个 3×1 字符串数组。
names = join(names)
names = 3×1 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 = 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 函数返回空字符串来指示它们之间没有任何内容。
N = split(str,pat)
N = 11×1 string
"10"
""
""
"3"
""
""
""
""
"5"
""
""
丢弃空字符串,并保留表示数字的子字符串。
N = N(strlength(N) > 0)
N = 3×1 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 = 12×1 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 = 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"
拆分字符串数组。两个逗号之间什么也没有即表示缺失数据。如果 split 在拆分时遇到重复的分隔符,它会返回空字符串作为输出数组中的对应元素。
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 字符串数组。
names = ["Mary Butler"; "Santiago Marquez"; "Diana Lee"]
names = 3×1 string
"Mary Butler"
"Santiago Marquez"
"Diana Lee"
在空白字符处拆分数组。默认情况下,split 沿大小为 1 的第一个尾部维度定向输出子字符串。因为 names 是一个 3×1 字符串数组,所以 split 沿 splitNames 的第二个维度(即列)来定向子字符串。
splitNames = split(names)
splitNames = 3×2 string
"Mary" "Butler"
"Santiago" "Marquez"
"Diana" "Lee"
要沿行(即第一个维度)定向子字符串,请在指定分隔符之后指定维度。splitNames 现在是一个 2×3 字符串数组,名在第一行,姓在第二行。
splitNames = split(names," ",1)splitNames = 2×3 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 = 7×1 string
"bacon"
""
"lettuce"
""
""
""
"tomato"
match = 6×1 string
","
" "
","
" "
"and"
" "
使用 join 函数将 newStr 和 match 重新联接起来。
originalStr = join(newStr,match)
originalStr = "bacon, lettuce, and tomato"
输入参数
输入文本,指定为字符串数组、字符向量或字符向量元胞数组。如果 str 是一个具有多个元素的数组,则每个元素必须包含相同数量的子字符串。
分隔子字符串,指定为下列值之一:
字符串数组
字符向量
字符向量元胞数组
pattern数组(自 R2020b 开始提供)
在 delimiter 中指定的子字符串不会显示在输出 newStr 中。
在一个字符串数组、字符向量元胞数组或 pattern 数组中指定多个分隔符。split 函数根据 delimiter 的元素拆分 str。分隔符在 delimiter 中显示的顺序不重要,除非有多个分隔符都从 str 中的同一字符处开始匹配。在这种情况下,split 函数将在 delimiter 中的第一个匹配分隔符处进行拆分。
示例: split(str,{' ',',','--'}) 在出现空格、逗号和连续短划线对组的位置拆分 str。
要沿其放置输出子字符串的维度,指定为正整数。如果您不指定 dim,则默认值为(输入数组 str 的)大小等于 1 的第一个尾部维度。
输出参量
从原始数组拆分出来的子字符串,以字符串数组或字符向量元胞数组形式返回。如果输入 str 是字符串数组,则 newStr 也是字符串数组。否则,newStr 为字符向量元胞数组。
newStr 的大小取决于 str 的大小和维度参量 dim。如果 str 是一个具有多个元素的数组,则每个元素必须包含相同数量 (N) 的子字符串。使用默认 dim 时,从输入 str 的每个元素拆分出的子字符串会沿 str 的大小等于 1 的第一个尾部维度放置:
如果
str是一个字符串标量或字符向量,则newStr是一个N×1字符串数组或字符向量元胞数组,其中N是子字符串的数量。如果
str是一个M×1字符串数组或元胞数组,则newStr是一个M×N数组。如果
str是一个1×M字符串数组或元胞数组,则newStr是一个1×M×N数组。如果
str是一个M1×M2字符串数组或元胞数组,则newStr是一个M1×M2×N数组。
标识的分隔符,以字符串数组或字符向量元胞数组形式返回。如果输入数组 str 是字符串数组,则 match 也是字符串数组。否则,match 为字符向量元胞数组。
match 包含的元素总是比输出 newStr 包含的元素少一个。
提示
如果
str是字符串数组或字符向量元胞数组,并且每个数组元素包含的子字符串数量不相同,请在for循环中一次处理这些元素,对每个元素单独调用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.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 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)