Котлинский эквивалент EqualsIgnoreCase в Java

Что эквивалентно Java equalsIgnoreCase в Kotlin для сравнения значений String?

Я использовал equals, но он не чувствителен к регистру.

93
1
25 111
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете использовать equals, но укажите параметр ignoreCase:

"example".equals("EXAMPLE", ignoreCase = true)

Как правило, вам не нужно искать альтернативы, поскольку Kotlin повторно использует существующие типы Java, такие как String. Фактически, эти типы отображаются на внутренние типы Kotlin. В случае с String это выглядит так:

java.lang.String -> kotlin.String

Следовательно, желаемый метод equalsIgnoreCase был бы доступен, только если бы он также был предоставлен в kotlin.String, чего нет. Разработчики Kotlin решили предоставить более общую функцию equals, которая позволяет вам указывать нечувствительность к регистру с помощью логического параметра.

Вы можете использовать класс Java String в любое время, если это действительно необходимо (это не рекомендуется, IntelliJ будет жаловаться на это):

("hello" as java.lang.String).equalsIgnoreCase("Hello")

С помощью функции расширения мы могли бы даже добавить функциональность к классу kotlin.String:

fun String.equalsIgnoreCase(other: String) = 
    (this as java.lang.String).equalsIgnoreCase(other)

В Kotlin реализована функция equalIgnoreCase, но с небольшими изменениями, например, "str1" .equal ("Str1", true) для игнорирования регистра и "str1" .equal ("Str1", false) для случая совпадения. Второй аргумент является необязательным, вы можете его пропустить. По умолчанию это false и применяется в случае совпадения.

Abdur Rahman 02.02.2019 10:19

Ответ @ hluhovskyi правильный, однако, чтобы использовать его на EditText или TextView, используйте следующее -

etPassword.text.toString().equals(etConfirmPassword.text.toString(), ignoreCase = true)

Согласно документации Kotlin:

fun String?.equals(
    other: String?, 
    ignoreCase: Boolean = false
): Boolean

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/equals.html

Например:

val name: String = "Hitesh"
when{
name.equals("HITESH", true) -> {
                                // DO SOMETHING
    }
}

Другие вопросы по теме