比较字符串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>() } } 

在这里输入图像描述

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

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

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

将两个SpannableStringBuilderSpannableStringBuildertoString string ,这应该工作。

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

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,只要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.比较:

public override fun compareTo(other: String): Int

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

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

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

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

如果你正在使用==(double等于)匹配字符串,那么它是比较地址和返回最大时间错误的结果,因为每个Java文档,所以使用等于相同

如果你想使用平等忽略的情况下,然后在String的equals方法中传递true

 if (s1.equals(s2,true)) 

其他明智的,你可以使用这个没有布尔类似

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

下面是完整的代码

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

随着案件检查

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

IGNORECASE

 if(a.equals(b,false)) 

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

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