首页 文章

比较String Kotlin

提问于
浏览
18

我正在学习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

8 回答

  • 6

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

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

    试试这肯定会起作用 .

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

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

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

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

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

    如果您使用==(double equals)来匹配字符串,那么它将根据java文档比较地址和返回最大错误结果,因此请使用 equals

    如果要使用 equal ignore case ,则在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")
     }
    }
    
  • 3

    使用 toStringSpannableStringBuilder 转换为 string ,这应该可行 .

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

    1. == :

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

    2. equals :

    指示某个其他对象是否“等于”此对象 . 实现必须满足以下要求:Reflexive:对于任何非空引用值x,x.equals(x)应返回true . 对称:对于任何非空引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true . Transitive:对于任何非空引用值x,y和z,如果x.equals(y)返回true而y.equals(z)返回true,则x.equals(z)应返回true Consistent:for any non -null引用值x和y,x.equals(y)的多次调用始终返回true或始终返回false,前提是不修改在对象的equals比较中使用的信息 .

    /**  * 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
    

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

  • 0

    通过案例检查

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

    IGNORECASE

    if(a.equals(b,false))
    
  • 28

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

    然后我遇到了这个wonderful article,它清楚地表达了Kotlin中的各种字符串比较类型以及它们之间的差异 .

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

    希望这会有所帮助

相关问题