1. 概要

このチュートリアルでは、KotlinStringを比較するさまざまな方法について説明します。

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ですべてのコードをチェックしてください。