2

2 つの文字列を「数値的に」比較したい。つまり、 like2Cは 未満です11A。私はこれを試しましたが、うまくいきません:

if("2A" < "11A"){
    echo "First corect";
}

if(strcmp("2A", "11A") < 0){
    echo "Last corect";
}

echo "Tests completed";
4

4 に答える 4

7

strnatcmp(または大文字と小文字を区別しない兄弟)を探していstrnatcasecmpます。

これにより、入力の数値部分が数字として比較され (「11whatever」の前に「2whatever」が配置されます)、テキストとしての部分がテキストとして比較されます (「2b」の前に「2a」が配置されます)。

于 2013-05-08T12:30:08.910 に答える
0
if(intval(0x2A) < intval(0x11A)){
    echo "First corect";
}
else
{
    echo "Tests incompleted";
}

このコードを試してください

于 2013-05-08T12:33:42.757 に答える
0

次の関数を記述します。

  1. 各文字列をリスト<Object>にトークン化します。各オブジェクトは文字列または整数であり、整数は非数字間の連続した数字の文字列から作成されます。文字列は任意の 2 桁間の連続した非数字です。
  2. ループ内で、2 つのリストを要素ごとに比較します。オブジェクトのタイプが一致しない場合 (つまり、Integer と String を比較する場合) は、小さい方、文字、または数字としてソートするかどうかを決定します。それらが一致する場合は、より小さい等しいより大きい比較を行います。
  3. リスト内の 2 つNth elementsが等しい場合は、 の比較に進みますN+1th elements。そうでない場合return t/fは、整数と整数、または文字列と文字列の比較に基づきます。
于 2013-05-08T12:47:11.713 に答える