str = substr (s, offset) ¶(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
[cstr] = strsplit (str) ¶[cstr] = strsplit (str, del) ¶[cstr] = strsplit (…, name, value) ¶[cstr, matches] = strsplit (…) ¶使用 del 指定的分隔符拆分字符串 str,并返回子字符串的元胞数组。
若未指定分隔符,则在空白字符 {" ", "\f", "\n", "\r", "\t", "\v"} 处拆分字符串。否则,分隔符 del 必须是一个字符串或字符串元胞数组。默认情况下,输入字符串 s 中的连续分隔符会被合并为一个,从而只产生一次拆分。
支持的 名称/值 键值对参数有:
true(默认值)或 false。"simple"(默认值)或 "regularexpression"。简单分隔符按字面精确匹配文本;否则使用 regexp 中所述的正则表达式语法。可选的第二个输出 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
}
[cstr] = ostrsplit (s, sep) ¶[cstr] = ostrsplit (s, sep, strip_empty) ¶使用一个或多个分隔符 sep 拆分字符串 s,并返回字符串元胞数组。
连续的分隔符以及边界处的分隔符会产生空字符串,除非 strip_empty 为真。strip_empty 的默认值为假(false)。
二维字符数组会在分隔符处以及原始列边界处进行拆分。
示例:
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
}
str = strjoin (cstr) ¶str = strjoin (cstr, delimiter) ¶将元胞字符串数组 cstr 的元素连接成单个字符串。
若未指定 delimiter,cstr 的元素之间用空格分隔。
若 delimiter 指定为字符串,则使用该字符串连接元胞字符串数组。支持转义序列。
若 delimiter 是一个字符串元胞数组,且其长度比 cstr 少 1,则通过交错插入 delimiter 的元胞字符串元素来连接 cstr 的元素。此时不支持转义序列。
strjoin ({'Octave','Scilab','Lush','Yorick'}, '*')
⇒ 'Octave*Scilab*Lush*Yorick'
另请参阅: strsplit。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2