2017-07-03 4 views
7

Ich studiere Kotlin, aber ich bin sehr enttäuscht, ich kann zwei Strings nicht vergleichen.Vergleichen String Kotlin

Was ist der richtige Weg zu vergleichen.

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

+3

'==' der richtige Weg ist. – Naetmul

+0

@Naetmul funktioniert nicht mein Code ... Bild überprüfen – FlipNovid

+0

können Sie in .toString konvertieren und mit == Operator überprüfen? –

Antwort

12

== Nach documentation für structual Gleichheit Gebrauch. Es ist in a?.equals(b) ?: (b === null) übersetzt.

In Ihrem Fall konvertieren Sie Login und übergeben von SpannableStringBuilder zu String.

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

Covert sowohl die SpannableStringBuilder-string mit toString, sollte diese Arbeit.

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

mit Koffer Überprüfung

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

IgnoreCase

if(a.equals(b,false)) 
0

folgende Lösung Versuchen Sie, sehen, ob es hilft:

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

1. ==:

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

2. equals:

Gibt an, ob ein anderes Objekt "gleich" dieses ist. Implementierungen müssen die folgenden Anforderungen erfüllen: Reflexiv: Für jeden Nicht-Null-Referenzwert x, x.equals (x) sollte Wahr zurückgeben.

Symmetrisch: Für alle Nicht-Null-Referenzwerte x und y sollte x.equals (y) nur dann true zurückgeben, wenn y.equals (x) true zurückgibt.

Transitiv: für alle Nicht-Null-Referenzwerte x, y und z, wenn x.equals (y) wahr zurückgibt und y.equals (z) liefert true zurück, dann x.equals (z) zurückgeben soll wahr

Konsistente: für alle nicht-null-Referenzwerte x und y, multiple Invokationen von x.equals (y) konsistent return true oder konsistent falsch zurückzukehren, verwendet keine Information zur Verfügung gestellt in gleich Vergleiche auf der Objekte modifiziert, .

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

Vergleicht dieses Objekt mit dem angegebenen Objekt für Ordnung. Gibt null zurück, wenn dieses Objekt dem angegebenen anderen Objekt entspricht, eine negative Nummer, wenn es kleiner als andere ist, oder eine positive Zahl, wenn es größer ist als .

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

Vergleicht zwei Strings lexikographisch, optional Fall ignorieren Unterschiede

4

Hier ist das Beispiel für den Abgleich der beiden Strings Kotlin.

Wenn Sie == (Doppel equals) zum Anpassen der Zeichenfolge dann ist es die Adresse vergleichen verwenden & per Java-Dokumentation maximale Zeit falsche Ergebnis zurück, so für die

gleichen gleich verwenden Wenn Sie verwenden möchten, gleich Fall ignorieren dann die wahr in der Methode equals von String übergeben

if (s1.equals(s2,true)) 

andere weise Sie können dies nur verwenden, ohne boolean wie

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

Komplettrad-Code ist unter

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

warum "versuchen" ?? Eine gute Antwort wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern für zukünftige Besucher von SO. Bitte fügen Sie eine Beschreibung hinzu, um andere zu verstehen. :) –

+1

Ich habe die Antworten mit einigen aktualisiert Erklärung & danke für die mich schätzen. :) –

+0

guten job, schätze auch :) –