Main Content

strtok

所选的字符串部分

说明

示例

token = strtok(str) 从左到右解析 str,使用空白字符作为分隔符,并在 token 中返回部分或全部文本。首先,strtok 忽略 str 中的任何前导空白。然后,strtok 从不是空白的第一个字符开始,包括直到下一个空白字符前(不包括该空白字符)的所有字符。strtoktoken 中返回这一部分文本。如果 strtok 找不到任何空白作为分隔符,则 token 包括直到 str 结束的所有字符,包括结尾字符。

示例

token = strtok(str,delimiters) 使用 delimiters 中的字符解析 str。如果 delimiters 包括多个字符,则 strtokdelimiters 中的每个字符均视为单独的分隔符。由于分隔符是单个字符,因此 delimiters 可以是任何大小,并且 delimiters 中的字符可以是任意顺序。

在此语法中,空白字符不是分隔符,除非将它们包含在 delimiters 中。

示例

[token,remain] = strtok(___)remain 中返回剩余文本(如果有)。如果 strtok 找到分隔符,则将它包含在 remain 开头。如果 strtokstr 中找不到分隔符,则它将在 token 中返回整个 str,前导分隔符除外,并且 remain 不包含任何字符。您可将此语法与上述语法中的任何输入参数一起使用。

示例

全部折叠

创建字符向量。返回第一个空白字符(即分隔符)之前的所有文本。strtok 会丢弃前导空白字符。

chr = '     Four score and seven years ago'
chr = 
'     Four score and seven years ago'
token = strtok(chr)
token = 
'Four'

创建一个字符串。

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"

使用 '!' 字符作为分隔符返回字符串的第一部分。

token = strtok(str,'!')
token = 
"A horse"

创建一个字符串数组。

str = ["all in good time";
       "my dog has fleas";
       "leave no stone unturned"]
str = 3x1 string
    "all in good time"
    "my dog has fleas"
    "leave no stone unturned"

在一个字符串数组中返回词元,在另一个字符串数组中返回剩余文本。

[token,remain] = strtok(str)
token = 3x1 string
    "all"
    "my"
    "leave"

remain = 3x1 string
    " in good time"
    " dog has fleas"
    " no stone unturned"

创建包含示例 HTML 代码的字符串。将其分解成由 <> 字符分隔的段。将各个段存储在字符串数组中。

您可以使用双引号创建字符串。要将多个字符串串联为一个字符串,请使用 plus 运算符 +

str = "<ul class=continued><li class=continued>" + ...
      "<pre><a name=""13474""></a>token = strtok" + ...
      "(str,delimiter)<a name=""13475""></a>" + ...
      "token = strtok(str)"
str = 
"<ul class=continued><li class=continued><pre><a name="13474"></a>token = strtok(str,delimiter)<a name="13475"></a>token = strtok(str)"

创建空字符串数组以包含各代码段。

segments = strings(0)
segments = 

  0x0 empty string array

str 分成多个段。编写 while 循环,以对剩余的 HTML 文本重复调用 strtok。当不再有需要解析的文本时,while 循环将退出。

remain = str;
while (remain ~= "")
   [token,remain] = strtok(remain, '<>');
   segments = [segments ; token];
end

显示代码段。

segments
segments = 9x1 string
    "ul class=continued"
    "li class=continued"
    "pre"
    "a name="13474""
    "/a"
    "token = strtok(str,delimiter)"
    "a name="13475""
    "/a"
    "token = strtok(str)"

输入参数

全部折叠

输入文本,指定为字符串数组、字符向量或字符向量元胞数组。

数据类型: string | char | cell

分隔字符,指定为字符串数组、字符向量或字符向量元胞数组。因为 strtok 将单个字符视为分隔符,因此 delimiters 可以是任何大小,并且可以包含任意顺序的字符。

示例: strtok(str,{'YZ','X'})'X''Y''Z' 视为单独的分隔符。它不会将 'YZ' 视为分隔符。

数据类型: string | char | cell

输出参数

全部折叠

所选文本部分,以字符串数组、字符向量或字符向量元胞数组形式返回。token 包括从第一个不是分隔符的字符开始,到下一个分隔符(不包括下一个分隔符)结束的所有文本。strtoken 的数据类型相同。

数据类型: string | char | cell

文本的剩余部分,以字符串数组、字符向量或字符向量元胞数组形式返回。如果 strtokstr 中找到分隔符,则 remain 包括从该分隔符开始(包括该分隔符),一直到文本结尾的所有文本。strremain 的数据类型相同。

数据类型: string | char | cell

提示

不要将转义字符序列指定为分隔符。strtok 不转换转义字符序列。但您可以使用 char 函数指定此类字符。例如,要将制表符指定为分隔符,请使用 char(9) 而不是 '\t'

扩展功能

版本历史记录

在 R2006a 之前推出