2010年12月2日木曜日

(C#, VB.NET)文字(列)の大小比較


文字(列)変数 a と b があったとして、単純な大小比較を行いたい場合。

VB.NETなら
    a > b
の様に、単純に演算子(>,>=,=,<=,<)で大小比較が可能です。

C#なら(VB.NET でも可能)
    res = a.CompareTo(b);
の様にします。
CompareTo の戻り値で大小判定が可能です。
res が -1 (0 より小さい値) なら a < b
res が 0 なら a = b
res が 1 (0 より大きい値) なら a > b

比較内容によっては戻り値が -32 とかになるので、比較条件は -1 や 1 ではなく 0 を基準に指定します。
OK:if (res < 0)
NG:if (res < -1)

開始・終了の範囲指定を逆指定した場合の入替処理などに使えます。
if (idFrom.CompareTo(idTo) > 0)
{
    string w = idFrom;
    idFrom = idTo;
    idTo = w;
}
文字列で色々と凝った比較をしたい場合は string.Compare を使います。

■環境
OS:Microsoft Windows XP Home Edition 日本語 ServicePack 3
IDE:Microsoft Visual Studio 2005 Standard Edition 日本語 Service Pack 1
Framework:Microsoft .NET Framework Version 2.0 SP2