[.NET クラスライブラリ Tips][String] 文字列どうしを辞書順で比較する

スポンサーリンク

本記事の概要

この記事では、文字列と文字列を比較して、辞書順でどちらが先かを判定する方法について説明します。

公式サイト情報はコチラを参照してください。

文字列どうしを辞書順で比較する Compare メソッドの基本

Compare メソッドは、指定した 2 つの文字列(String オブジェクト)を比較し、それらの相対位置(文字「A」と「B」を比較した場合は「A」の方が先となる)を並べ替え順序で示す整数を返します。返される値は以下表の通りです。

条件
0 未満 1つ目の文字列が2つ目の文字列よりも先
0 2つの文字列が等しい
1 以上 1つ目の文字列が2つ目の文字列よりも後

文字列どうしを比較する例

以下は「hello」と「Hello」という文字列を比較する例です。

どちらの文字列も「Hello」ですが、先頭が小文字の「h」の方が、辞書では順番的に早く出現するため、「hello は Hello よりも先」と表示されます。

string strA = "hello";
string strB = "Hello";

int ret = String.Compare(strA, strB);

if (ret < 0)
{
    Console.WriteLine($"{strA} は {strB} よりも先");
}
else if (ret == 0)
{
    Console.WriteLine($"{strA} は {strB} と等しい");
}
else
{
    Console.WriteLine($"{strA} は {strB} よりも後");
}

部分文字列を比較する例

部分文字列を比較するには、以下書式の Compare メソッドを使用します。

Compare(String 1つ目の文字列, int32 1つ目の文字列の比較開始位置, 
        String 2つ目の文字列, int32 2つ目の文字列の比較開始位置,
        int32 比較する文字列長さ)

以下は「hello」と「Hello」という文字列の2文字目から2文字分を比較する例です。

「el」と「el」を比較することになるので「hello は Hello と等しい」となります。

string strA = "hello";
string strB = "Hello";

int ret = String.Compare(strA, 1, strB, 1, 2);

if (ret < 0)
{
    Console.WriteLine($"{strA} は {strB} よりも先");
}
else if (ret == 0)
{
    Console.WriteLine($"{strA} は {strB} と等しい");
}
else
{
    Console.WriteLine($"{strA} は {strB} よりも後");
}

 

Please follow and like us:

コメント

タイトルとURLをコピーしました