Kotlinでの文字列の比較
1. 概要
このチュートリアルでは、KotlinのStringを比較するさまざまな方法について説明します。
2. 比較演算子
「==」演算子から始めましょう。
これを使用して、2つの文字列が構造的に等しいかどうかを確認できます。 これは、Javaでequalsメソッドを使用するのと同じです。
val first = "kotlin"
val second = "kotlin"
val firstCapitalized = "KOTLIN"
assertTrue { first == second }
assertFalse { first == firstCapitalized }
ここで、参照等式演算子「===」について考えてみましょう。 2つの変数が同じオブジェクトを指している場合は、trueを返します。 これは、Javaで==を使用するのと同じです。
引用符を使用して新しいStringオブジェクトを初期化するたびに、そのオブジェクトは自動的に文字列プールに配置されます。 したがって、そのように作成された2つの等しい文字列は、常に同じオブジェクトを参照します。
assertTrue { first === second }
ただし、コンストラクターを使用して新しい String を作成する場合は、Kotlinに新しいオブジェクトが必要であることを明示的に通知します。 その結果、新しい String が作成され、ヒープに配置されます。
val third = String("kotlin".toCharArray())
assertTrue { first == third }
assertFalse { first === third }
3. との比較
equalsメソッドは、“ ==”演算子と同じ結果を返します。
assertTrue { first.equals(second) }
assertFalse { first.equals(firstCapitalized) }
大文字と小文字を区別しない比較を行う場合は、equalsメソッドを使用して、2番目のオプションパラメーターignoreCaseにtrueを渡すことができます。
assertTrue { first.equals(firstCapitalized, true) }
4. compareToとの比較
KotlinにはcompareToメソッドもあり、これを使用して2つの文字列の順序を比較できます。 同様に、 equals メソッドとして、compareToメソッドにもオプションのignoreCase引数が付属しています。
assertTrue { first.compareTo(second) == 0 }
assertTrue { first.compareTo(firstCapitalized) == 32 }
assertTrue { firstCapitalized.compareTo(first) == -32 }
assertTrue { first.compareTo(firstCapitalized, true) == 0 }
compareTo メソッドは、等しい文字列の場合はゼロを返し、引数のASCII値が小さい場合は正の値を返し、引数のASCII値が大きい場合は負の値を返します。 ある意味、引き算と同じように読むことができます。
最後の例では、 ignoreCase 口論 、 2つの文字列は等しいと見なされます
5. 結論
この簡単な記事では、いくつかの基本的な例を使用して、Kotlinで文字列を比較するさまざまな方法を見ました。
いつものように、GitHubですべてのコードをチェックしてください。