比较String Kotlin

Fli*_*vid 24 kotlin

我正在学习kotlin,但我很失望,我无法比较两个弦乐.

比较的正确方法是什么.

btn_login.setOnClickListener {
            val login = input_email.text.trim()
            val pass = input_password.text.trim()

            if( login.equals( pass ) ){
                startActivity<MainActivity>()
            }

            if (login?.equals(other = pass)){
                startActivity<MainActivity>()
            }

            if (login == pass){
                startActivity<MainActivity>()
            }

        }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Dmi*_*nko 34

根据结构平等使用的文档==.它被翻译成a?.equals(b) ?: (b === null).

在你的情况下转换登录并从SpannableStringBuilder传递到String.

    val login = input_email.text.trim().toString()
Run Code Online (Sandbox Code Playgroud)


Mar*_*ain 10

以下是使用kotlin匹配两个字符串的示例.

如果您正在使用==(双等号)的字符串匹配那么它是比较地址和返回的最大时间错误的结果按Java文档,以便使用等于对同一

如果要使用相等的忽略大小写,则在String的equals方法中传递true

if (s1.equals(s2,true))
Run Code Online (Sandbox Code Playgroud)

另外,你可以在没有布尔值的情况下使用它

if (s1.equals(s2,false)) or if (s1.equals(s2))
Run Code Online (Sandbox Code Playgroud)

补充代码如下

 fun main(args: Array<String>) {
 val s1 = "abc"
 val s2 = "Abc"
 if (s1.equals(s2,true))
 {
    println("Equal")
 }
 else
 {
    println("Not Equal")
 }
}
Run Code Online (Sandbox Code Playgroud)

  • 我已经用一些解释更新了答案,感谢您的赞赏。:) (2认同)
  • 您的答案不正确。当运算符正在检查*结构相等*(https://kotlinlang.org/docs/reference/equality.html#structural-equality)时,使用`==`运算符比较字符串会自动转换为`.equals()`调用。 (2认同)

Sha*_*ala 7

隐蔽既SpannableStringBuilderstringtoString,这应该工作.

val login = input_email.text.trim().toString()
val pass = input_password.text.trim().toString()
if (login == pass){
    startActivity<MainActivity>()
}
Run Code Online (Sandbox Code Playgroud)


Mis*_*agh 5

1 ==.:

if ( string1 == string2 ){...}

2 equals.:

指示某个其他对象是否“等于”此对象。实现必须满足以下要求: 自反:对于任何非空引用值 x,x.equals(x) 应返回 true。

对称:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true 并且 y.equals(z) 返回 true,则 x.equals(z) 应返回 true

一致:对于任何非空引用值 x 和 y,如果对象的 equals 比较中使用的信息没有被修改,则多次调用 x.equals(y) 一致返回 true 或一致返回 false。

/**  * Returns `true` if this string is equal to [other], optionally ignoring character case.  *  * @param ignoreCase `true` to ignore character case when comparing strings. By default `false`.  */ 
public fun String?.equals(other: String?, ignoreCase: Boolean = false): Boolean 
Run Code Online (Sandbox Code Playgroud)

3 compareTo.:

public override fun compareTo(other: String): Int

将此对象与指定对象进行比较以了解顺序。如果该对象等于指定的其他对象,则返回零;如果小于其他对象,则返回负数;如果大于其他对象,则返回正数。

public fun String.compareTo(other: String, ignoreCase: Boolean = false): Int
Run Code Online (Sandbox Code Playgroud)

按字典顺序比较两个字符串,可以选择忽略大小写差异


viv*_*k86 5

我知道这已经太晚了,但作为学习 Kotlin 的新手,我也有同样的疑问。

然后我发现了这篇精彩的文章,它阐明了 Kotlin 中的各种字符串比较类型以及它们之间的差异。

简而言之,== 和 .equals() 都可以用来比较 kotlin 中两个字符串的值。

希望这有帮助