MATLAB中strfind函数用法

目录

语法

说明

示例

在字符向量中查找子字符串

使用模式查找字母和单词

在元胞数组中查找子字符串

以元胞数组形式返回索引


        strfind函数的功能是在其他字符串中查找字符串。

语法

k = strfind(str,pat)
k = strfind(str,pat,'ForceCellOutput',cellOutput)

说明

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

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

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 返回一个包含数值数组的标量元胞,该数值数组包含子字符串 ain 在 str 中的所有出现处的索引。要访问元胞中的数值数组,请使用花括号。

k{1}
ans = 1×2

     6    15

提示

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值