Confronto di stringhe in Kotlin

1. Panoramica

In questo tutorial, discuteremo diversi modi di confrontare le stringhe in Kotlin.

2. Operatori di confronto

Cominciamo con l'operatore "==".

Possiamo usarlo per verificare se due stringhe sono strutturalmente uguali. È l'equivalente dell'utilizzo del metodo equals in Java :

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

Consideriamo ora l'operatore di uguaglianza referenziale "===". Restituisce vero se le due variabili puntano allo stesso oggetto. È l'equivalente dell'utilizzo di == in Java .

Ogni volta che inizializziamo un nuovo oggetto String utilizzando le virgolette, viene automaticamente inserito nel pool di stringhe. Pertanto, due stringhe uguali create in questo modo faranno sempre riferimento allo stesso oggetto:

assertTrue { first === second }

Tuttavia, se usiamo un costruttore per creare una nuova stringa , diciamo esplicitamente a Kotlin che vogliamo un nuovo oggetto. Di conseguenza, una nuova stringa verrà creata e inserita nell'heap:

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

3. Confronto con uguale

Il metodo uguale restituisce lo stesso risultato dell'operatore "==" :

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

Quando vogliamo fare un confronto senza distinzione tra maiuscole e minuscole, possiamo usare il metodo equals e passare true per il secondo parametro opzionale ignoreCase :

assertTrue { first.equals(firstCapitalized, true) }

4. Confronto con compareTo

Kotlin ha anche un metodo compareTo che possiamo usare per confrontare l'ordine delle due stringhe. Analogamente al metodo equals , anche il metodo compareTo include un argomento ignoreCase opzionale :

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

Il metodo compareTo restituisce zero per stringhe uguali, un valore positivo se il valore ASCII dell'argomento è inferiore e un valore negativo se il valore ASCII dell'argomento è maggiore. In un certo senso, possiamo leggerlo come leggiamo la sottrazione.

Nell'ultimo esempio, a causa dell'argomento ignoreCase , le due stringhe sono considerate uguali .

5. conclusione

In questo rapido articolo, abbiamo visto diversi modi di confrontare le stringhe in Kotlin utilizzando alcuni esempi di base.

Come sempre, controlla tutto il codice su GitHub.