Main Content

strfind

在其他字符串中查找字符串

说明

示例

k = strfind(str,pat)str 中搜索出现的 pat。输出 k 指示 str 中每次出现的 pat 的起始索引。如果未找到 pat,则 strfind 返回一个空数组 []strfind 函数执行区分大小写的搜索。

  • 如果 str 是字符向量或字符串标量,则 strfind 返回 double 类型的向量。

  • 如果 str 是字符向量元胞数组或字符串数组,则 strfind 返回 double 类型的向量元胞数组。

示例

cellOutput 为 true 时,即使 str 是字符向量,k = strfind(str,pat,'ForceCellOutput',cellOutput) 也会强制 strfind 以元胞数组形式返回 k

示例

全部折叠

在字符向量中查找子字符串的起始索引。

首先,创建一个字符向量。

str = 'Find the starting indices of substrings in a character vector';

查找子字符串 in

k = strfind(str,'in')
k = 1×5

     2    15    19    36    41

str 中有五个实例。

查找子字符串 In

k = strfind(str,'In')
k =

     []

由于 strfind 区分大小写,未找到子字符串。k 是一个空数组。

str 中查找空白。

k = strfind(str,' ')
k = 1×9

     5     9    18    26    29    40    43    45    55

str 中有十处空白。

自 R2020b 开始提供

创建字符向量。

str = 'Find the letters.'
str = 
'Find the letters.'

使用 lettersPattern 函数创建匹配字母序列的模式。

pat = lettersPattern
pat = pattern
  Matching:

    lettersPattern

查找每个字母的索引。当 pat 匹配任意长度的字母序列时,strfind 会在找到一个匹配项时立即停止,然后继续下一个匹配。例如,'Find''F' 都与 lettersPattern 匹配,因为没有指定匹配的字母数。但是,strfind 首先匹配 'F',并返回其索引。然后 strfind 匹配 'i',依此类推。(您可以调用带可选参数(指定要匹配的字母数)的 lettersPattern。)

k = strfind(str,pat)
k = 1×14

     1     2     3     4     6     7     8    10    11    12    13    14    15    16

要查找单词的开头,请调用带边界的 lettersPatternletterBoundary 函数匹配字母和非字母字符之间的边界。

pat = letterBoundary + lettersPattern
pat = pattern
  Matching:

    letterBoundary + lettersPattern

k = strfind(str,pat)
k = 1×3

     1     6    10

有关创建模式对象的函数列表,请参阅pattern

在字符向量元胞数组中查找子字符串的起始索引。

创建字符向量元胞数组。

str = {'How much wood would a woodchuck chuck';
       'if a woodchuck could chuck wood?'};

str 中查找 wood

idx = strfind(str,'wood')
idx=2×1 cell array
    {[10 23]}
    {[ 6 28]}

检查输出元胞数组以查找 wood 的实例。

idx{:,:}
ans = 1×2

    10    23

ans = 1×2

     6    28

子字符串 wood 在第一个字符向量的索引 10 和 23 处出现,在第二个字符向量的索引 6 和 28 处出现。

在字符向量中查找子字符串的所有出现处。强制 strfind 以元胞数组形式返回这些出现处的索引。然后显示这些索引。

创建一个字符向量并查找 ain 模式的所有出现处。

str = 'The rain in Spain.';
k = strfind(str,'ain','ForceCellOutput',true)
k = 1x1 cell array
    {[6 15]}

strfind 返回一个包含数值数组的标量元胞,该数值数组包含子字符串 ainstr 中的所有出现处的索引。要访问元胞中的数值数组,请使用花括号。

k{1}
ans = 1×2

     6    15

输入参数

全部折叠

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

搜索模式,指定为下列值之一:

  • 字符串标量

  • 字符向量

  • pattern 标量(自 R2020b 开始提供)

指示是否强制以元胞数组形式返回输出的指示符,指定为 falsetrue01

输出参数

全部折叠

出现的 pat 的索引,以数组的形式返回。如果未找到 pat,则 k 是一个空数组 []

  • 如果 str 是字符向量或字符串标量,则 k 是双精度向量,表示出现的每个 pat 的索引。

  • 如果 str 是字符向量元胞数组或字符串数组,则 k 是元胞数组。对于 str 中的每段文本,k 的对应元胞中都包含一个双精度向量,表示出现的每个 pat 的索引。

提示

  • 如果 pat 是不包含任何字符的字符向量或字符串标量(''""),则 strfind 将返回一个空数组。

  • 建议使用 contains 函数在字符串数组中查找模式。

扩展功能

版本历史记录

在 R2006a 之前推出