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.