文字列の順序を比較したいとき、compareTo()
という便利なメソッドがあります。このメソッドを使うことで、2つの文字列の順序を簡単に判別することができます。
compareTo()
メソッドは、基準となるstr
と比較対象のother
の2つの文字列を比較して、整数を返します。基本的にUnicodeのコードポイントを基にして文字列の比較を行うため、比較結果はコードポイントの順序に基づいています。
0
: 両方の文字列が等しい場合。>0
:str
がother
より辞書順で後にくる場合。<0
:str
がother
より辞書順で前にくる場合。
利用場面
- 並べ替えやソートの際に文字列の順序を決定する場面。
- 二つの文字列が同じか異なるかを確認する際。
String apple = "apple";
String banana = "banana";
int result = apple.compareTo(banana); // -1 (appleはbananaより前にくる)
String mango = "mango";
String anotherMango = "mango";
int result = mango.compareTo(anotherMango); // 0 (両方の文字列が同じ)
「山」と「川」を比べると、コードの結果は<0
になります。つまり、「山」の方が「川」よりもUnicodeのコードポイントとしては小さい値を持っているということです。
この方法の問題点は、実際の言語のニュアンスや辞書的な順序を考慮しないという点です。言語や文化に特有の順序付けやソートを行いたい場合、専用のライブラリや追加の処理が必要となります。
String yama = "山";
String kawa = "川";
int result = yama.compareTo(kawa);
Dart言語のcompareTo()
メソッドは、一見単純な機能に見えるかもしれませんが、文字列を取り扱う多くの場面での比較やソートなどで非常に役立ちます。