Was ist die richtige Alternative zu Java's equalsIgnoreCase?

9

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?

    
Martin 30.10.2014, 07:03
quelle

2 Antworten

1

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.

Stephen C 30.10.2014 08:01
quelle
0

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.

    
Vogel612 30.10.2014 08:19
quelle