本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

strsplit

在指定分隔符处拆分字符串或字符向量

说明

示例

C = strsplit(str) 在空白处将 str 拆分为 C。空白字符等效于集合 {' ','\f','\n','\r','\t','\v'} 中的任何转义序列。

如果 str 具有连续的空白字符,则 strsplit 将它们视为一个空格。

示例

C = strsplit(str,delimiter)delimiter 指定的分隔符处拆分 str

如果 str 具有连续的分隔符,并且它们之间没有其他字符,则 strsplit 将它们视为一个分隔符。例如,strsplit('Hello,world',',')strsplit('Hello,,,world',',') 返回相同的输出。

示例

C = strsplit(str,delimiter,Name,Value) 使用一个或多个名称-值对组参数指定其他分隔符选项。例如,要将连续分隔符视为单独的分隔符,可以指定 'CollapseDelimiters',false

示例

[C,matches] = strsplit(___) 还返回数组 matchesmatches 输出参数包含 strsplit 拆分 str 时遇到的所有分隔符。您可以将此语法与前面语法中的任何输入参数结合使用。

示例

全部折叠

str = 'The rain in Spain.';
C = strsplit(str)
C = 1x4 cell array
    {'The'}    {'rain'}    {'in'}    {'Spain.'}

C 是一个包含四个字符向量的元胞数组。

拆分包含逗号分隔值的字符向量。

data = '1.21, 1.985, 1.955, 2.015, 1.885';
C = strsplit(data,', ')
C = 1x5 cell array
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}

拆分字符向量 data,其中包含数值文本、单位 m/s,且文本任意一侧可能有任意数量的空白。正则表达式 \s* 匹配出现零次或多次的任何空白字符。

data = '1.21m/s1.985m/s 1.955 m/s2.015 m/s 1.885m/s';
[C,matches] = strsplit(data,'\s*m/s\s*',...
    'DelimiterType','RegularExpression')
C = 1x6 cell array
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}    {0x0 char}

matches = 1x5 cell array
    {'m/s'}    {'m/s '}    {' m/s'}    {' m/s '}    {'m/s'}

在这种情况下,C 中的最后一个字符向量为空。此空字符向量在最后一个匹配的分隔符后。

myPath = 'C:\work\matlab';
C = strsplit(myPath,'\')
C = 1x3 cell array
    {'C:'}    {'work'}    {'matlab'}

根据 ' ''ain' 拆分字符向量,并将多个分隔符作为一个分隔符处理。在字符向量元胞数组中指定多个分隔符。

str = 'The rain in Spain stays mainly in the plain.';
[C,matches] = strsplit(str,{' ','ain'},'CollapseDelimiters',true)
C = 1x11 cell array
  Columns 1 through 7

    {'The'}    {'r'}    {'in'}    {'Sp'}    {'stays'}    {'m'}    {'ly'}

  Columns 8 through 11

    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x10 cell array
  Columns 1 through 7

    {' '}    {'ain '}    {' '}    {'ain '}    {' '}    {'ain'}    {' '}

  Columns 8 through 10

    {' '}    {' '}    {'ain'}

根据空白和 'ain' 拆分同一字符向量,使用正则表达式并分开处理多个分隔符。

[C,matches] = strsplit(str,{'\s','ain'},'CollapseDelimiters',...
    false, 'DelimiterType','RegularExpression')
C = 1x13 cell array
  Columns 1 through 6

    {'The'}    {'r'}    {0x0 char}    {'in'}    {'Sp'}    {0x0 char}

  Columns 7 through 13

    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x12 cell array
  Columns 1 through 8

    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {'ain'}

  Columns 9 through 12

    {' '}    {' '}    {' '}    {'ain'}

在这种情况下,strsplit 分开处理两个分隔符,因此输出 C 中连续匹配的分隔符之间显示了空字符向量。

根据字符向量 ', '', and ' 拆分文本。

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', ',', and '})
C = 1x3 cell array
    {'bacon'}    {'lettuce'}    {'and tomato'}

matches = 1x2 cell array
    {', '}    {', '}

由于该命令首先列出 ', ' 并且 ', and ' 包含 ', ',因此 strsplit 函数根据第一个分隔符拆分 str 并且不再继续处理到第二个分隔符。

如果您颠倒分隔符的顺序,则 ', and ' 具有更高优先级。

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', and ',', '})
C = 1x3 cell array
    {'bacon'}    {'lettuce'}    {'tomato'}

matches = 1x2 cell array
    {', '}    {', and '}

输入参数

全部折叠

输入文本,指定为字符向量或字符串标量。

数据类型: char | string

分隔字符,指定为字符向量、1×n 字符向量元胞数组或 1×n 字符串数组。在 delimiter 中指定的文本不会显示在输出 C 中。

在元胞数组或字符串数组中指定多个分隔符。strsplit 函数根据 delimiter 的元素拆分 str。分隔符在 delimiter 中显示的顺序无关紧要,除非有多个分隔符都从 str 中的同一字符处开始匹配。在此种情况下,strsplit 将在 delimiter 中的第一个匹配分隔符处进行拆分。

delimiter 可以包含下列转义序列:

\\

反斜杠

\0

空值

\a

警报

\b

退格符

\f

换页符

\n

换行符

\r

回车符

\t

水平制表符

\v

垂直制表符

示例: ','

示例: {'-',','}

数据类型: char | cell | string

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 'DelimiterType','RegularExpression' 指示 strsplitdelimiter 视为正则表达式。

多分隔符处理,指定为由 'CollapseDelimiters'true/false 组成的逗号分隔对组。如果为 true,则 str 中的连续分隔符将作为一个分隔符处理。如果为 false,则连续分隔符将作为单独的分隔符处理,这会导致匹配的分隔符之间出现空字符向量 '' 元素。

示例: 'CollapseDelimiters',true

分隔符类型,指定为逗号分隔的对组,包含 'DelimiterType' 和下列字符向量之一。

'Simple'除了在转义序列中之外,strsplitdelimiter 作为字面文本进行处理。
'RegularExpression'strsplitdelimiter 作为正则表达式处理。

在这两种情况下,delimiter 可以包括转义序列。

输出参数

全部折叠

原始字符向量的一部分,以字符向量元胞数组或字符串数组形式返回。C 始终比 matches 多包含一个元素。因此,如果 str 以分隔符开头,则 C 的第一个元素不包含任何字符。如果 str 以分隔符结尾,则 C 中的最后一个元胞不包含任何字符。

标识的分隔符,以字符向量元胞数组或字符串数组形式返回。matches 始终比输出 C 少包含一个元素。如果 str 是字符向量或字符向量元胞数组,则 matches 是元胞数组。如果 str 是字符串数组,则 matches 是字符串数组。

提示

  • 从 R2016b 开始,建议使用 split 函数拆分字符串数组的元素。

另请参阅

| | |

在 R2013a 中推出