MATLAB中strsplit函数用法

目录

语法

说明

示例

在空白处拆分字符向量

在特定分隔符处拆分值的字符向量

根据文件分隔符拆分路径

拆分具有多个分隔符的字符向量

拆分具有多个重叠分隔符的文本


        strsplit函数的功能是在指定分隔符处拆分字符串或字符向量。

语法

C = strsplit(str)
C = strsplit(str,delimiter)
C = strsplit(str,delimiter,Name,Value)
[C,matches] = 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(___) 还返回数组 matches。matches 输出参数包含 strsplit 拆分 str 时遇到的所有分隔符。您可将此语法与上述语法中的任何输入参数一起使用。

示例

在空白处拆分字符向量

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

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

在特定分隔符处拆分值的字符向量

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

data = '1.21, 1.985, 1.955, 2.015, 1.885';
C = strsplit(data,', ')
C = 1x5 cell
    {'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
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}    {0x0 char}

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

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

根据文件分隔符拆分路径

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

拆分具有多个分隔符的字符向量

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

str = 'The rain in Spain stays mainly in the plain.';
[C,matches] = strsplit(str,{' ','ain'},'CollapseDelimiters',true)
C = 1x11 cell
    {'The'}    {'r'}    {'in'}    {'Sp'}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x10 cell
    {' '}    {'ain '}    {' '}    {'ain '}    {' '}    {'ain'}    {' '}    {' '}    {' '}    {'ain'}

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

[C,matches] = strsplit(str,{'\s','ain'},'CollapseDelimiters',...
    false, 'DelimiterType','RegularExpression')
C = 1x13 cell
    {'The'}    {'r'}    {0x0 char}    {'in'}    {'Sp'}    {0x0 char}    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x12 cell
    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {' '}    {'ain'}

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

拆分具有多个重叠分隔符的文本

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

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

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

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

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

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

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

参数说明

str — 输入文本

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

delimiter — 分隔字符

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

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

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

\\

反斜杠

\0

空值

\a

警报

\b

退格符

\f

换页符

\n

换行符

\r

回车符

\t

水平制表符

\v

垂直制表符

C — 原始文本的一部分

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

matches — 找到的分隔符

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值