Creé un programa Java para comparar dos cadenas:
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
Muestra "bienvenida". Entiendo que distingue entre mayúsculas y minúsculas. Pero mi problema es que quiero comparar dos cadenas sin distinción entre mayúsculas y minúsculas. Es decir, espero que la salida sea hai
.
s1.equalsIgnoreCase(s2)
es posible que no lo haga en todos los lugares donde sea necesario. Le sugiero que busque de dónde proviene la cadena (un archivo o una base de datos o una entrada de usuario tal vez) y la convierta a mayúsculas (o minúsculas) y continúe usando .equals para la comparación.
equalsIgnoreCase
enfoque aceptado . Lea sobre el problema del turco I y problemas similares de Unicode para conocer la justificación.
equalsIgnoreCase
devuelve el valor incorrecto para turco de todos modos, porque devuelve verdadero para comparar "i" e "I", aunque debería devolver falso. Así que sospecho que si quieres tener en cuenta las configuraciones regionales, a Collator
es realmente el camino a seguir.
toLowerCase
/ toUpperCase
en toda la cadena y hacerlo por carácter también da dos resultados diferentes.