Matlabの文字列比較(C言語のstrcmpと同様の関数を実現)

今日問題が発生しました。Matlabを使用して2つの文字列のサイズを比較したかったのですが、それで十分だと思いました>、<、==。これらの比較記号が論理行列を返すことを誰が知っていますか(通常、2つの文字列の長さが同じである必要があります)。インターネットで検索しました。「追加」とだけ言ってくださいall()、any()確かに、すべては[すべて]を意味し、すべては[1つだけ]を意味しますが、誰が大きいか、誰が小さいかを判断することはできません。matlabに付属のstrcmpは、2つの文字列が等しいかどうかしか判断できません(等しいはtrueです)。 、それ以外の場合はfalse)、誰が大きいか、誰が小さいかを判断できません。前任者が関数を書いているのを偶然見つけました。この関数の関数は、C言語のstrcmpに似ています。

  • str1 <str2、1を返す
  • str1 == str2、0を返す
  • str1 <str2、-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