比较String Kotlin

时间:2017-07-03 01:43:00

标签: 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>()
            }

        }

enter image description here

9 个答案:

答案 0 :(得分:33)

根据documentation结构平等使用==。它被翻译为a?.equals(b) ?: (b === null)

在你的情况下,转换登录并从SpannableStringBuilder传递给String。

    val login = input_email.text.trim().toString()

答案 1 :(得分:8)

SpannableStringBuilder转换为string toString,这应该可行。

val login = input_email.text.trim().toString()
val pass = input_password.text.trim().toString()
if (login == pass){
    startActivity<MainActivity>()
}

答案 2 :(得分:8)

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

如果您使用==(双等号)来匹配字符串,那么它会比较地址&amp;根据java文档返回错误结果的最大时间,因此对于相同的

使用 equals

如果你想使用 equal ignore case ,那么在String的equals方法中传递 true

config.assets.compile = true

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

if (s1.equals(s2,true))

补充代码在

之下
if (s1.equals(s2,false)) or if (s1.equals(s2))

答案 3 :(得分:3)

<强> 1。 ==

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

<强> 2。 equals

  

指示某个其他对象是否等于&#34;这个。   实现必须满足以下要求:   自反:对于任何非空参考值x,x.equals(x)应该   返回true。

     

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

     

传递:对于任何非空引用值x,y和z,if   x.equals(y)返回true,y.equals(z)返回true,然后   x.equals(z)应该返回true

     

一致:对于任何非空引用值x和y,为多个   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 

<强> 3。 compareTo

public override fun compareTo(other: String): Int

  

将此对象与指定的订单对象进行比较。返回零   如果此对象等于指定的其他对象,则为负数   如果数字小于其他数字,则为数字;如果数字较大,则为正数   比其他人。

public fun String.compareTo(other: String, ignoreCase: Boolean = false): Int
  

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

答案 4 :(得分:3)

我知道这太晚了,但作为一个学习Kotlin的新手,我有同样的疑虑。

然后我遇到了这个wonderful article,它阐明了Kotlin中的各种字符串比较类型以及它们之间的差异。

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

希望有帮助

答案 5 :(得分:1)

进行案例检查

String a=.....
String b=.....
if(a==b){
}

IgnoreCase

if(a.equals(b,false))

答案 6 :(得分:1)

科特林:

if (editText1.text.toString() == editText2.text.toString() ) {
   println("Should work now! The same value")
}

答案 7 :(得分:0)

尝试以下解决方案,看看是否有帮助:

val passStr: String = textView.text.toString()  
if( loginStr.compareTo(passStr, false) ){
            startActivity<MainActivity>()
        }

答案 8 :(得分:0)

尝试这一定肯定会有用。

val style = buildString { karthik}
val style2 = buildString { karthik }
var result = style.equals(style2)
if(result){//Do something}