Matlab 字符串比较(实现类似 C 语言中 strcmp 的功能)

今天遇到一个问题,想用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

猜你喜欢

转载自blog.csdn.net/Gou_Hailong/article/details/114753221