Saltar al contenido

Sensibilidad a mayúsculas y minúsculas Kotlin / ignoreCase

Si encuentras algún detalle que te causa duda puedes dejarlo en la sección de comentarios y te ayudaremos lo mas rápido que podamos.

Solución:

Puedes llamar al equals función directamente, lo que le permitirá especificar el parámetro opcional ignoreCase:

if (answerEditText.equals("brasil", ignoreCase = true)) 
    correctAnswers++

El problema central es que == solo llama a través de equals(), que distingue entre mayúsculas y minúsculas. Hay algunas maneras de resolver esto:

1) Poner en minúsculas la entrada y comparar directamente:

if (answerEditText.toLowerCase() == "brasil" ||
    answerEditText.toLowerCase() == "brazil") 
    // Do something

Esto es fácil de entender y mantener, pero si tiene más de un par de respuestas, se vuelve difícil de manejar.

2) Ponga en minúsculas la entrada y pruebe los valores en un conjunto:

if (answerEditText.toLowerCase() in setOf("brasil", "brazil")) 
    // Do Something

Tal vez defina el conjunto como una constante en algún lugar (¿en un objeto complementario?) para evitar recrearlo varias veces. Esto es bueno y claro, útil cuando tienes muchas respuestas.

3) Ignorar el caso y comparar vía .equals() método:

if (answerEditText.equals("Brazil", true) ||
    answerEditText.equals("Brasil", true)) 
    // Do something

Similar a la opción 1, útil cuando solo tiene un par de respuestas con las que lidiar.

4) Use una expresión regular que no distinga entre mayúsculas y minúsculas:

val answer = "^Bra(s|z)il$".toRegex(RegexOption.IGNORE_CASE)
if (answer.matches(answerEditText)) 
    // Do something

De nuevo, crea el answer regex una vez y guárdelo en algún lugar para evitar recrear. Siento que esta es una solución exagerada.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *