Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果。下面就介绍一下字符串数组查找的小技巧。

  字符串数组我通常会选择应用cell格式保存,下面的分析也是建立在这个前提下。

  

  【1】 strcmp() 函数

  strcmp() 函数的基本功能是比较两个字符串是否相等,其基本用法是:

 TF = strcmp(s1,s2);

  但是,如果我们要查找字符串数组中等于某字符串的索引时,该如果操作?strcmp() 函数也提供了这个功能,用法相同:

 TF = strcmp(s1,s2);

  其中,s1是字符串数组,s2是字符串,返回值为逻辑类型,大小与字符串数组s1相同;

  【2】 strfind() 函数

  

  strcmp() 函数比较的是两个字符串是否相等。但是如果想查找字符串数组中包含某字符串的记录时,我们就可以选择strfind() 函数。

 k = strfind(str,pattern);

  输出结果k表示pattern在str中出现的位置,若不出现,则返回[]。比如:

 S = ‘Find the starting indices of the pattern string’;
k = strfind(S, ‘in’)
k =

  上面是strfind() 函数的基本功能,但是如果查找字符串数组中包含某字符串的索引时,strfind() 函数也可以大显身手,返回和字符串数组相同大小的cell类型数据,每个cell为字符串出现位置,向量类型,比如:

 cstr = {‘How much wood would a woodchuck’; ‘if a woodchuck could chuck wood?’};
idx = strfind(cstr, ‘wood’)
idx =
[* double]
[* double]
Idx{:,:}
ans = ans =

  【3】 一个问题:有一个字符串数组cstr1,要找到包含字符串str2的索引,该如果操作?

  一个直接的答案是:

 idx = strfind(cstr1,str2);
finger(length(idx),) = ==;
for i = :length(idx)
if ~isempty(idx(i))
finger(i) = ==;
end
end

  思路是正确的,但是代码量有点大,需要7行,而且速度较慢。其实要实现这个功能,1行代码足矣。如下:

 finger = ~cellfun(@isempty, strfind(cstr1,str2));

  上面的代码还有另外一种写法,

 finger = cellfun(@(x) ~isempty(strfind(x,str2)), cstr1);

  三种方法输出结果是一样的,但是第2种方法速度最快,第1种方法次之,第3种方法最慢。大家可以进行测试下。

最新文章

  1. jQuery extend方法使用及实现
  2. 网站部署后Parser Error Message: Could not load type 的解决方案
  3. 低功耗蓝牙4.0BLE编程-nrf51822开发(10)-描述符
  4. LeetCode222 Count Complete Tree Nodes
  5. Miller_Rabin (米勒-拉宾) 素性测试
  6. 深入浅出C++引用(Reference)类型
  7. PHP获取当前文件路径信息的方法
  8. linux之SQL语句简明教程---SUBSTRING
  9. java动态加载配置文件
  10. nginx在CentOs下的安装及配置
  11. C#高级编程学习一-----------------第五章泛型
  12. awk之NR==FNR问题
  13. 隱藏在素數規律中的Pi -- BZOJ1041解題報告
  14. 【SQL跟踪工具】SQL Profiler 跟踪器
  15. BootStrap学习(5)_多媒体对象&列表组
  16. centos Install Mrtg
  17. MySQL SELECT练习题*28
  18. Bootstrap3基础 container 浏览器宽度与容器宽度的四种配合
  19. Git冲突与解决方法【转】
  20. learning ddr pagesize calculate

热门文章

  1. 使用WCF的Trace与Message Log功能
  2. 学习Cassandra的开源电子书(中英文版)
  3. 【PRINCE2是什么】PRINCE2认证之七大原则(2)
  4. iOS-C基础
  5. ASP.NET Core的配置(4):多样性的配置来源[下篇]
  6. 配置putty自动登陆服务器
  7. 【记录】ASP.NET XSS 脚本注入攻击
  8. Java基础--反射机制的知识点梳理
  9. composer安装yii2问题总结
  10. LeetCode刷题系列