matlab中findstr,strfind,strcmp,strncmp区别与联系

在Matlab中,这几个函数区分如下:

(以下默认S1和S2是字符串,同样也适用于cell细胞类型数据,也就是循环对cell中每个元素分别判断即可。)

findstr(S1,S2):寻找是否有S1和S2之间的匹配,真返回1,假返回0,双向;

例:          s = 'How much wood would a woodchuck chuck?';

                findstr(s,'a')    returns  21

                findstr('a',s)    returns  21

                findstr(s,'wood') returns  [10 23]

                findstr(s,'Wood') returns  []

                findstr(s,' ')    returns  [4 9 14 20 22 32]

strfind(S1,S2):寻找S2是否匹配S1,和上面的唯一区别就是这个是单向的。请注意唯一的区别在例子中红字部分。

 例:       s = 'How much wood would a woodchuck chuck?';

               strfind(s,'a')    returns  21

               strfind('a',s)    returns  []

               strfind(s,'wood') returns  [10 23]

               strfind(s,'Wood') returns  []

               strfind(s,' ')    returns  [4 9 14 20 22 32]

strcmp(S1,S2):寻找S1和S2是否完全匹配,S1和S2没有顺序的区分。

例:       s= 'wooden';

              strcmp(s,'wood')    returns 0

              strcmp(s,'wooden')    returns 1

              strcmp('wooden',s)    returns 1

strcnmp(S1,S2,n):寻找S1和S2的前n个字符是否完全匹配,S1和S2没有顺序的区分。

例:       s= 'wooden';

             strncmp(s,'wood',4)    returns 1

             strncmp(s,'wood',5)    returns 0

              strncmp(s,'wooden',4)    returns 1

              strncmp('wooden',s,4)    returns 1

strcmpi(S1,S2)与strncmpi(S1,S2,n)与上面分别对应的strcmp(S1,S2)与strncmp(S1,S2,n)完全相同,唯一的区分是匹配时不区分大小写。

参考文献:

<http://www.mathworks.com/matlabcentral/newsreader/view_thread/257590>

<http://www.mathworks.com/matlabcentral/newsreader/view_thread/145799>

<http://www.mathworks.com/matlabcentral/newsreader/view_thread/145799>

<http://www.mathworks.de/matlabcentral/newsreader/view_thread/294626>

 

源文档 <http://blog.163.com/6_mao/blog/static/63271315201110203738923/>

posted @ 2014-04-17 15:23  AI Algorithms  阅读(4327)  评论(0编辑  收藏  举报