今天遇到一个问题,想用Matlab比较两个字符串的大小,以为用>、<、==
即可,谁知道这些比较符号返回的是一个逻辑矩阵(并且一般还要求两个字符串长度一致),在网上搜了下说加all()、any()
即可。确实,all的意思是 【所有的都】,any的意思是【只有一个就】,但是不能判断谁大谁小,matlab自带的strcmp只能判断两个字符串是否相等(相等为真,否则为假),也不能判断谁大谁小,偶然发现一个前辈写了个函数,这个函数的功能类似于C语言中的strcmp:
- str1<str2, return 1
- str1==str2, return 0
- str1<str2, return -1
做点摘抄,以防下次再次入坑,函数如下:
function p=mstrcmp(str1,str2)
k=min(length(str1),length(str2));
for n=1:k %Compare the top k
if(str1(n)>str2(n))
p=1;break;
elseif(str1(n)==str2(n))
p=0;
else p=-1;break;
end
end
if(p==0)
if(length(str1)>length(str2)) %The first k bits are equal, but str1 is longer
p=1;
elseif(length(str1)==length(str2))
p=0;
else p=-1;
end
end
end