Es gibt viele und viele Beispiele dafür, warum und wann java.lang.String.equalsIgnoreCase
wegen falscher Verwendung des Gebietsschemas fehlschlägt.
Aber ich habe keine Beispiele für den richtigen Weg gefunden. Im Gegensatz zu java.lang.String.toUpperCase
gibt es keine Version mit einem Gebietsschema-Parameter. Das Konvertieren beider Zeichenfolgen in Groß- oder Kleinschreibung scheint verschwenderisch zu sein. Vor allem, wenn Sie an einer Anwendung arbeiten, die viele Vergleiche durchführt.
Was ist der richtige Weg, um einen Ignorier-Case-String-Vergleich zu machen, wobei sowohl das Gebietsschema als auch die Performance berücksichtigt werden?
Nach dieser Seite können Sie Collator verwenden, um Groß- und Kleinschreibung unabhängig von der Groß- und Kleinschreibung zu berücksichtigen folgt:
%Vor%(Von der obigen Seite kopiert ...)
Offensichtlich können Sie das Gebietsschema in anderen Kontexten anders wählen.
Für @fge - Dieser Oracle Bug Report gibt ein Beispiel für die Art der Sache, die passiert.
Eine mögliche Alternative könnte Regex missbrauchen. Dies ist ziemlich leistungsintensiv mit dynamisch ändernden Strings, aber wenn Sie mit Konstanten vergleichen, könnte eine Alternative sein:
%Vor%Dies verankert die Zeichenfolge, mit der verglichen werden soll, und gibt Unicode-aware an, die die literale Zeichenfolge nicht berücksichtigt.
Tags und Links string java localization string-comparison