我正在学习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>()
}
}
答案 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}