Ich habe ein Java-Programm erstellt, um zwei Zeichenfolgen zu vergleichen:
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
Es wird "Willkommen" angezeigt. Ich verstehe, dass zwischen Groß- und Kleinschreibung unterschieden wird. Mein Problem ist jedoch, dass ich zwei Zeichenfolgen ohne Groß- und Kleinschreibung vergleichen möchte. Dh ich erwarte die Ausgabe hai
.
s1.equalsIgnoreCase(s2)
Sie es möglicherweise nicht überall tun, wo es getan werden muss. Ich schlage vor, dass Sie herausfinden, woher die Zeichenfolge stammt - möglicherweise aus einer Datei, einer Datenbank oder einer Benutzereingabe - und entweder in Groß- oder Kleinbuchstaben konvertieren und weiterhin .equals für den Vergleich verwenden.
equalsIgnoreCase
Ansatz. Lesen Sie das türkische I-Problem und ähnliche Unicode-Probleme zur Begründung.
equalsIgnoreCase
gibt ohnehin den falschen Wert für Türkisch zurück, da für den Vergleich von "i" und "I" true zurückgegeben wird, obwohl false zurückgegeben werden sollte. Ich vermute also, dass a der richtige Collator
Weg ist , wenn Sie Gebietsschemas berücksichtigen möchten .
toLowerCase
/ toUpperCase
für die gesamte Zeichenfolge und das Ausführen pro Zeichen führt auch zu zwei unterschiedlichen Ergebnissen.