在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/>