Kotlin 等价于 Java 的 equalsIgnoreCase

在 Kotlin,比较 String值的等价物是什么?

我使用了 equals,但它并非不区分大小写。

43004 次浏览

您可以使用 equals,但指定 ignoreCase参数:

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

通常,您不需要找到替代方案,因为 Kotlin 重用了现有的 Java 类型,如 String。实际上,这些类型映射到 Kotlin 内部类型。String的情况是这样的:

- > kotlin.String

因此,所需的方法 equalsIgnoreCase只有在 kotlin.String中也提供的情况下才可用,而 kotlin.String不提供。Kotlin 的设计者决定提供一个更通用的 equals函数,让您用一个布尔参数指定不区分大小写。

如果真的有必要,你可以在任何时候使用 JavaString类(不推荐这样做,IntelliJ 会抱怨这一点) :

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

在一个扩展函数的帮助下,我们甚至可以将这个功能添加到 kotlin.String类中:

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

@ hluhovskyi 的回答是正确的,但是在 EditTextTextView上使用它,请使用以下-

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

根据科特林文件:

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
}
}

对我来说,

string1.contains(string2, ignoreCase = true)

这招对我很管用。 因为我在这里使用了一个搜索函数。