5.3.3字符串分割和连接

 
:str= substr (s,offset)
:substr (s,offset,len)

返回的子字符串s从字符号开始offset并且是len字符长。

偏移的位置编号以1开头。如果offset为负,提取从字符串末尾开始。

如果len被省略,子字符串延伸到的末尾s的负值len提取到内部len字符串末尾的字符

示例:

substr ("This is a test string", 6, 9)
     ⇒ "is a test"
substr ("This is a test string", -11)
     ⇒ "test string"
substr ("This is a test string", -11, -7)
     ⇒ "test"

此函数是以Perl中的等效函数命名的。

广告
 
:[tok,rem] = strtok (str)
:[tok,rem] = strtok (str,delim)

查找字符串中的所有字符str最多(但不包括)字符串中的第一个字符delim.

str也可以是字符串的元胞数组,在这种情况下,函数对每个单独的字符串执行,并返回令牌和维护器的元胞数组。

忽略前导分隔符。如果delim未指定,则假定为空白。

如果rem是指定的,它包含字符串的剩余部分,从第一个分隔符开始。

示例:

strtok ("this is the life")
     ⇒ "this"

[tok, rem] = strtok ("14*27+31", "+-*/")
     ⇒
        tok = 14
        rem = *27+31

详见: index,strsplit,strchr,isspace.

广告
 
:[cstr] = strsplit (str)
:[cstr] = strsplit (str,del)
:[cstr] = strsplit (…,name,value)
:[cstr,matches] = strsplit (…)

拆分字符串str使用指定的分隔符delandrew一个子字符串的单元字符串数组。

如果未指定分隔符,字符串将在空白处拆分{" ", "\f", "\n", "\r", "\t", "\v"}否则,分隔符,del必须是字符串或字符串的元胞数组。默认情况下,输入字符串中的连续分隔符s在一次拆分中折叠成一个结果。

支持name/value成对的参数为:

可选的第二输出,matches,返回在原始字符串中匹配的分隔符。

带有简单分隔符的示例:

strsplit ("a b c")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

strsplit ("a,b,c", ",")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

strsplit ("a foo b,bar c", {" ", ",", "foo", "bar"})
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

strsplit ("a,,b, c", {",", " "}, "collapsedelimiters", false)
      ⇒
          {
            [1,1] = a
            [1,2] =
            [1,3] = b
            [1,4] =
            [1,5] = c
          }

带有正则表达式分隔符的示例:

strsplit ("a foo b,bar c", ',|\s|foo|bar', ...
          "delimitertype", "regularexpression")
⇒
{
            [1,1] = a
            [1,2] = b
            [1,3] = c
}

strsplit ("a,,b, c", '[, ]', "collapsedelimiters", false, ...
          "delimitertype", "regularexpression")
⇒
{
            [1,1] = a
            [1,2] =
            [1,3] = b
            [1,4] =
            [1,5] = c
}

strsplit ("a,\t,b, c", {',', '\s'}, "delimitertype", "regularexpression")
⇒
{
            [1,1] = a
            [1,2] = b
            [1,3] = c
}

strsplit ("a,\t,b, c", {',', ' ', '\t'}, "collapsedelimiters", false)
⇒
{
            [1,1] = a
            [1,2] =
            [1,3] =
            [1,4] = b
            [1,5] =
            [1,6] = c
}

详见: ostrsplit,strjoin,strtok,regexp.

广告
 
:[cstr] = ostrsplit (s,sep)
:[cstr] = ostrsplit (s,sep,strip_empty)

拆分字符串s使用一个或多个分离器sep并返回字符串的元胞数组。

连续的分隔符和边界处的分隔符会导致空环,除非strip_empty为真。的默认值strip_empty是错误的。

二维字符数组在分隔符处和原始列边界处进行拆分。

用例

ostrsplit ("a,b,c", ",")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

ostrsplit (["a,b" ; "cde"], ",")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = cde
          }

详见: strsplit,strtok.

广告
 
:str= strjoin (cstr)
:str= strjoin (cstr,delimiter)

连接单元字符串数组的元素,cstr,转换为单个字符串。

如果没有delimiter的元素cstr被一个空间隔开。

如果delimiter指定为字符串,则使用该字符串连接元胞字符串数组。支持转义序列。

如果delimiter是长度小于1的元胞字符串数组cstr,那么的元素cstr通过交错的单元串元素来连接delimiter。不支持转义序列。

strjoin ({'Octave','Scilab','Lush','Yorick'}, '*')
      ⇒ 'Octave*Scilab*Lush*Yorick'

详见: strsplit.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2