Java的equalsIgnoreCase的Kotlin等价形式

am46iovg  于 2023-02-13  发布在  Kotlin
关注(0)|答案(6)|浏览(315)

在Kotlin中,比较String值的Java equalsIgnoreCase的等价物是什么?
我使用了equals,但它不区分大小写。

8cdiaqws

8cdiaqws1#

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

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

tjrkku2a2#

根据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
    }
}
1wnzp6jl

1wnzp6jl3#

@hluhovskyi的答案是正确的,但是要在EditTextTextView上使用它,请使用以下命令-

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

ne5o7dgx4#

就我而言,

string1.contains(string2, ignoreCase = true)

这对我很有效。因为我在这里使用了搜索功能。

b1uwtaje

b1uwtaje5#

通常情况下,Kotlin重用现有的Java类型,如String,因此不需要寻找替代类型。实际上,这些类型Map到Kotlin内部类型。在String的情况下,如下所示:
java.lang.String-〉kotlin.String
因此,所需的equalsIgnoreCase方法只有在kotlin.String中也提供时才可用,而实际上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)
6kkfgxo0

6kkfgxo06#

您可以创建一个扩展方法:

/**
     * Shortcut to compare strings while ignoring case
     */
    fun String.similarTo(aString: String): Boolean {
        return equals(aString,true)
    }

用法:

val upperCase = "ϴẞ"
   val lowerCase = "θß"

   if (upperCase.similarTo(lowerCase)) {
      // Do your thing…
   }

相关问题