4

C#.net で同じ形式の別の文字列を比較するために、「10.0.20」などの文字列を数値に解析したいと考えていました。

たとえば、これら 2 つの数値を比較して、どちらが小さいかを確認します: if (10.0.30 < 10.0.30) ....

この場合、 decimal.Parse(string) が機能しなかったため、これに使用する必要がある解析方法がわかりません。

御時間ありがとうございます。

編集: @Romoku は、Version クラスがあることを知らなかった私の質問に答えました。それはまさに私が必要としていたものです。さてTIL。皆さん、ありがとうございます。あなたがいなかったら、私は何時間もかけてフォームを掘り下げていたでしょう。

4

2 に答える 2

1

バージョンは最も簡単な方法のように見えますが、無制限の「小数点以下の桁数」が必要な場合は、以下を試してください

private int multiDecCompare(string str1, string str2)
    {
        try
        {
            string[] split1 = str1.Split('.');
            string[] split2 = str2.Split('.');

            if (split1.Length != split2.Length)
                return -99;

            for (int i = 0; i < split1.Length; i++)
            {
                if (Int32.Parse(split1[i]) > Int32.Parse(split2[i]))
                    return 1;

                if (Int32.Parse(split1[i]) < Int32.Parse(split2[i]))
                    return -1;
            }

            return 0;
        }
        catch
        {
            return -99;
        }
    }

最初の文字列が左から右に向かって大きい場合は 1、文字列 2 の場合は -1、等しい場合は 0、エラーの場合は -99 を返します。

したがって、1を返します

string str1 = "11.30.42.29.66";
string str2 = "11.30.30.10.88";
于 2013-07-25T15:53:45.903 に答える