Comparaison de chaînes à Kotlin

1. Vue d'ensemble

Dans ce didacticiel, nous aborderons différentes façons de comparer des chaînes dans Kotlin.

2. Opérateurs de comparaison

Commençons par l'opérateur «==».

Nous pouvons l'utiliser pour vérifier si deux chaînes sont structurellement égales. C'est l'équivalent de l'utilisation de la méthode equals en Java :

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

Considérons maintenant l'opérateur d'égalité référentielle «===». Il renvoie true si les deux variables pointent vers le même objet. C'est l'équivalent d'utiliser == en Java .

Chaque fois que nous initialisons un nouvel objet String à l' aide de guillemets, il est automatiquement placé dans le pool de chaînes. Par conséquent, deux chaînes égales créées de cette manière référenceront toujours le même objet:

assertTrue { first === second }

Cependant, si nous utilisons un constructeur pour créer une nouvelle chaîne , nous disons explicitement à Kotlin que nous voulons un nouvel objet. Par conséquent, une nouvelle chaîne sera créée et placée sur le tas:

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

3. Comparaison avec des égaux

La méthode equals renvoie le même résultat que l' opérateur «==» :

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

Lorsque nous voulons faire une comparaison insensible à la casse, nous pouvons utiliser la méthode equals et passer true pour le deuxième paramètre facultatif ignoreCase :

assertTrue { first.equals(firstCapitalized, true) }

4. Comparaison avec compareTo

Kotlin a également une méthode compareTo que nous pouvons utiliser pour comparer l'ordre des deux chaînes. De même que la méthode equals , la méthode compareTo est également fournie avec un argument ignoreCase facultatif :

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

La méthode compareTo renvoie zéro pour les chaînes égales, une valeur positive si la valeur ASCII de l'argument est inférieure et une valeur négative si la valeur ASCII de l'argument est supérieure. D'une certaine manière, nous pouvons le lire comme nous lisons la soustraction.

Dans le dernier exemple, en raison de l' argument ignoreCase , les deux chaînes sont considérées comme égales .

5. Conclusion

Dans cet article rapide, nous avons vu différentes façons de comparer des chaînes dans Kotlin à l'aide d'exemples de base.

Comme toujours, veuillez consulter tout le code sur GitHub.