Quel est l'équivalent de Java equalsIgnoreCase
dans Kotlin pour comparer les valeurs String
?
J'ai utilisé equals
mais ce n'est pas sensible à la casse.
Vous pouvez utiliser equals
mais spécifier le paramètre ignoreCase
:
"example".equals("EXAMPLE", ignoreCase = true)
Normalement, vous n'avez pas besoin de trouver d'alternative puisque Kotlin réutilise les types Java existants tels que String
. En réalité, ces types sont mappés aux types internes de Kotlin. Dans le cas de String
, cela ressemble à ceci:
Java.lang.String
-> kotlin.String
Par conséquent, la méthode désirée equalsIgnoreCase
ne serait disponible que si elle était également fournie dans kotlin.String
, ce qui n’est pas le cas. Les concepteurs de Kotlin ont décidé de fournir une fonction plus générique equals
permettant de spécifier l'insensibilité à la casse avec un paramètre booléen.
Vous pouvez utiliser la classe Java String
à tout moment si cela est vraiment nécessaire (ce n'est pas recommandé, IntelliJ s'en plaindra):
("hello" as Java.lang.String).equalsIgnoreCase("Hello")
Avec l'aide d'une fonction d'extension, nous pourrions même ajouter la fonctionnalité à la classe kotlin.String
:
fun String.equalsIgnoreCase(other: String) =
(this as Java.lang.String).equalsIgnoreCase(other)
La réponse de @ hluhovskyi est correcte, mais pour l'utiliser sur EditText
ou TextView
, utilisez ce qui suit -
etPassword.text.toString().equals(etConfirmPassword.text.toString(), ignoreCase = false)