Kotlin - 文字列の比較方法(equals、==、compareTo)

二つの文字列が等しいかどうか、違うのかを比較する方法を紹介します。

1. "=="演算子で文字列を比較する

==演算子は2つの文字列が等しい場合 trueを返し、異なる場合falseを返します。基本的には大文字と小文字を別の文字として認識して比較します。

fun main(args: Array<String>) {
    val a = "kotlin"
    val b = "kotlin"
    val c = "KOTLIN"

    if (a == b)
        println("a is equal to b")

    if (a == c)
        println("a is equal to c")
}

Output:

a is equal to b

2. equals() で文字列を比較する

a.equals(b)はaとbの文字列が同じときtrue、異なる場合はfalseを返します。 ==演算子と同じ結果を返します。

fun main(args: Array<String>) {
    val a = "kotlin"
    val b = "kotlin"
    val c = "KOTLIN"

    if (a.equals(b))
        println("a is equal to b")

    if (a.equals(c))
        println("a is equal to c")
}

Output:

a is equal to b

2.1 equals(string, ignoreCase) : Case Insensitive

大文字と小文字を無視して文字列を比較するには、 equals(string, ignoreCase)のように、二番目の引数ignoreCaseにtrueを渡します。 falseを配信したり、入力しないと、大文字と小文字を区別して比較します。

fun main(args: Array<String>) {
    val a = "kotlin"
    val c = "KOTLIN"

    if (a.equals(c, false))
        println("a is equal to c (Case Sensitive)")

    if (a.equals(c, true))
        println("a is equal to c (Case Insensitive)")
}

Output:

a is equal to c (Case Insensitive)

3. compareTo() で文字列を比較する

a.compareTo(b)は、文字列aとbを比較して、 "同じ"、 "aが大きい"、 "bが大きい」に関する情報を戻します。

equals()は「同じ」、「違う」の情報のみを返す場合は、 compareTo()は任意の文字列がより大きいの追加情報を提供すると考えられます。 このような大きさの比較は、文字列のリストを昇順または降順でソートするときに使用することができます。

Return value Description
0 Two strings are equal.
negative integer the string is less than the other
positive integer the string is greater than the other

次のようなコードで、文字列の比較をすることができます。

fun main(args: Array<String>) {
    val a = "kotlin"
    val b = "kotlin"
    val c = "KOTLIN"

    if (a.compareTo(b) == 0)
        println("a is equal to b")

    if (a.compareTo(c) > 0)
        println("a is greater than c")

    if (c.compareTo(a) < 0)
        println("c is less than a")
}

Output:

a is equal to b
a is greater than c
c is less than a

3.1 compareTo(string, ignoreCase) : Case Insensitive

大文字と小文字を無視して文字列を比較するには、 compareTo(string, ignoreCase)のように二番目の引数ignoreCaseにtrueを渡します。 falseを配信したり、入力しないと、大文字と小文字を区別して比較します。

fun main(args: Array<String>) {
    val a = "kotlin"
    val c = "KOTLIN"

    if (a.compareTo(c, false) > 0)
        println("a is greater than c (Case Sensitive)")

    if (a.compareTo(c, true) == 0)
        println("a is equals to c (Case Insensitive)")
}

Output:

a is greater than c (Case Sensitive)
a is equals to c (Case Insensitive)

References

codechachaCopyright ©2019 codechacha