2026a

# 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