Ho creato un programma Java per confrontare due stringhe:
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
Visualizza "benvenuto". Capisco che fa distinzione tra maiuscole e minuscole. Ma il mio problema è che voglio confrontare due stringhe senza distinzione tra maiuscole e minuscole. Cioè mi aspetto che l'output sia hai
.
s1.equalsIgnoreCase(s2)
potresti non riuscire a farlo ovunque deve essere fatto. Ti suggerisco di trovare da dove proviene la stringa - un file o un database o l'input dell'utente forse - e convertirla in maiuscolo (o minuscolo) e continuare a utilizzare .equals per il confronto.
equalsIgnoreCase
approccio accettato . Leggi il problema turco I e problemi Unicode simili per la logica.
equalsIgnoreCase
restituisce comunque il valore sbagliato per il turco, perché restituisce true per il confronto "i" e "I", anche se dovrebbe restituire false. Quindi sospetto che se vuoi prendere in considerazione le impostazioni locali, a Collator
è effettivamente la strada da percorrere.
toLowerCase
/ toUpperCase
sull'intera stringa e farlo per carattere danno anche due risultati diversi.