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.
equalsIgnoreCaseapproccio accettato . Leggi il problema turco I e problemi Unicode simili per la logica.
equalsIgnoreCaserestituisce 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/ toUpperCasesull'intera stringa e farlo per carattere danno anche due risultati diversi.