String-Vergleich in Kotlin

1. Übersicht

In diesem Tutorial werden verschiedene Möglichkeiten zum Vergleichen von Strings in Kotlin erläutert.

2. Vergleichsoperatoren

Beginnen wir mit dem Operator "==".

Wir können damit überprüfen, ob zwei Zeichenfolgen strukturell gleich sind. Dies entspricht der Verwendung der Methode equals in Java :

val first = "kotlin" val second = "kotlin" val firstCapitalized = "KOTLIN" assertTrue { first == second } assertFalse { first == firstCapitalized }

Betrachten wir nun den referenziellen Gleichheitsoperator "===". Es gibt true zurück , wenn die beiden Variablen auf dasselbe Objekt zeigen. Dies entspricht der Verwendung von == in Java .

Immer wenn wir ein neues String- Objekt mit Anführungszeichen initialisieren , wird es automatisch in den String-Pool eingefügt. Daher verweisen zwei auf diese Weise erstellte gleiche Zeichenfolgen immer auf dasselbe Objekt:

assertTrue { first === second }

Wenn wir jedoch einen Konstruktor verwenden, um einen neuen String zu erstellen , teilen wir Kotlin ausdrücklich mit, dass wir ein neues Objekt möchten. Folglich wird ein neuer String erstellt und auf den Heap gelegt:

val third = String("kotlin".toCharArray()) assertTrue { first == third } assertFalse { first === third }

3. Vergleichen mit gleich

Die Methode equals gibt das gleiche Ergebnis zurück wie der Operator "==" :

assertTrue { first.equals(second) } assertFalse { first.equals(firstCapitalized) }

Wenn wir einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung durchführen möchten , können wir die equals- Methode verwenden und true für den zweiten optionalen Parameter ignoreCase übergeben :

assertTrue { first.equals(firstCapitalized, true) }

4. Vergleichen mit compareTo

Kotlin hat auch eine compareTo- Methode, mit der wir die Reihenfolge der beiden Zeichenfolgen vergleichen können. Ähnlich wie die equals- Methode enthält auch die compareTo- Methode ein optionales ignoreCase- Argument:

assertTrue { first.compareTo(second) == 0 } assertTrue { first.compareTo(firstCapitalized) == 32 } assertTrue { firstCapitalized.compareTo(first) == -32 } assertTrue { first.compareTo(firstCapitalized, true) == 0 }

Die compareTo- Methode gibt für gleiche Zeichenfolgen Null zurück, einen positiven Wert, wenn der ASCII-Wert des Arguments kleiner ist, und einen negativen Wert, wenn der ASCII-Wert des Arguments größer ist. In gewisser Weise können wir es so lesen, als würden wir Subtraktion lesen.

Im letzten Beispiel aufgrund des ignoreCase Argument , werden die beiden Strings als gleich betrachtet .

5. Schlussfolgerung

In diesem kurzen Artikel haben wir anhand einiger grundlegender Beispiele verschiedene Möglichkeiten zum Vergleichen von Zeichenfolgen in Kotlin gesehen.

Bitte überprüfen Sie wie immer den gesamten Code auf GitHub.