# strfind
在其他字符串中查找字符串
函数库: TyBase
# 语法
k = strfind(str,pattern)
# 说明
k = strfind(str,pattern) 在 str 中搜索出现的 pattern。输出 k 指示 str 中每次出现的 pattern 的起始索引。如果未找到 pattern,则 strfind 返回一个空数组 []。strfind 函数执行区分大小写的搜索。示例
如果 str 是字符串,则 strfind 返回 Int 类型的向量;
如果 str 是字符串数组,则 strfind 返回 Int 类型的数组。
# 示例
在字符串中查找子字符串
在字符串中查找子字符串的起始索引。
首先,创建一个字符串。
using TyBase
str = "Find the starting indices of a pattern in a character vector";
查找子字符串 in。
k = strfind(str, "in")
4-element Vector{Int64}:
2
15
19
40
str 中有四个实例。
查找子字符串 In。
k = strfind(str, "In")
Int64[]
由于 strfind 区分大小写,未找到子字符串。k 是一个空数组。
在 str 中查找空白。
k = strfind(str,' ')
10-element Vector{Int64}:
5
9
18
26
29
31
39
42
44
54
str 中有十处空白。
在数组中查找子字符串
在字符串数组中查找子字符串的起始索引。
创建字符串数组。
using TyBase
str = ["How much wood would a woodchuck chuck"
"if a woodchuck could chuck wood?"];
在 str 中查找 wood。检查输出数组以查找 wood 的实例。
idx = strfind(str, "wood")
[10, 23]
[6, 28]
子字符串 wood 在第一个字符串的索引 10 和 23 处出现,在第二个字符串的索引 6 和 28 处出现。
以数组形式返回索引
在字符串中查找子字符串的所有出现处。强制 strfind 以数组形式返回这些出现处的索引。然后显示这些索引。
创建一个字符串并查找 ain 模式的所有出现处。
strfind 返回一个数组,该数组包含子字符串 ain 在 str 中的所有出现处的索引。
using TyBase
str = "The rain in Spain.";
k = strfind(str, "ain")
6
15
# 输入参数
str - 输入文本字符 | 字符串 | 字符串数组
输入文本,指定为字符、字符串或字符串数组。
数据类型: Char | String
pattern - 搜索模式字符 | 字符串
搜索模式,指定为下列值之一:
字符
字符串
数据类型: Char | String
# 输出参数
k - 出现的 pat 的索引数组
出现的 pat 的索引,以数组的形式返回。如果未找到 pat,则 k 是一个空数组 []。
如果 str 是字符串,则 k 是整型向量,表示出现的每个 pat 的索引;
如果 str 是字符串数组,则 k 是数组。对于 str 中的每段文本,k 的对应元素中都包含一个整型向量,表示出现的每个 pat 的索引。
# 版本历史记录
在 2023a 之前推出
2025a SP3:返回值支持匹配成功的结果有重复部分。 在以前的版本中,返回值不会匹配重复部分,例如:
using TyBase
strfind("01010101","0101")
2-element Vector{Int64}:
1
5
从 2025a SP3 版本开始,返回值变为:
3-element Vector{Int64}:
1
3
5
2025b SP4:修改查找含有多字节字符(如中文、特殊字符等)文本的返回值。 在以前的版本中,会按照字符查找并返回索引,例如:
using TyBase
str = "频率(HZ)"
strfind(str, "HZ")
1-element Vector{Int64}:
4
从 2025b SP4 版本开始,按照字节进行查找,返回值变为:
1-element Vector{Int64}:
8
使用索引获得匹配的起始字符。
str[8]
'H': ASCII/Unicode U+0048 (category Lu: Letter, uppercase)
# 另请参阅
count | endswith | regexp | replace | split | startswith | strcmp