Kotlin - 문자열 비교 방법(equals, ==, compareTo)

두개의 문자열이 같은지, 다른지 비교하는 방법들을 소개합니다.

1. "==" 연산자로 문자열 비교

== 연산자는 두 문자열이 같을 때 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

Loading script...
codechachaCopyright ©2019 codechacha