web-dev-qa-db-fra.com

Kotlin équivalent de Java EqualsIgnoreCase

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. 

14
Farwa

Vous pouvez utiliser equals mais spécifier le paramètre ignoreCase:

"example".equals("EXAMPLE", ignoreCase = true)
28
hluhovskyi

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)
3
s1m0nw1

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)
0
Rohan Kandwal