Criei um programa Java para comparar duas strings:
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
Ele exibe "bem-vindo". Eu entendo que é sensível a maiúsculas e minúsculas. Mas meu problema é que eu quero comparar duas strings sem distinção entre maiúsculas e minúsculas. Ou seja, espero que a saída seja hai
.
s1.equalsIgnoreCase(s2)
poderá falhar em fazê-lo em todos os lugares em que precisa ser feito. Eu sugiro que você descubra de onde vem a string - um arquivo ou banco de dados ou entrada do usuário talvez - e converta para maiúsculas (ou minúsculas) e continue a usar .equals para a comparação.
equalsIgnoreCase
abordagem aceita . Leia sobre o problema turco I e questões similares do Unicode para obter a justificativa.
equalsIgnoreCase
retorna o valor incorreto para turco de qualquer maneira, porque retorna verdadeiro para comparar "i" e "I", embora deva retornar falso. Portanto, suspeito que, se você quiser levar em conta os locais, a Collator
é realmente o caminho a percorrer.
toLowerCase
/ toUpperCase
em toda a string e fazer por caractere também dá dois resultados diferentes.