EqualsIgnoreCase () funktioniert nicht wie vorgesehen.

8

Wenn ich das folgende Programm ausführe, druckt es nur

%Vor%

Aber aus equalsIgnoreCase docs in java 8 haben wir:

  

Zwei Zeichen c1 und c2 gelten als gleich ignorierender Fall, wenn at   mindestens eine der folgenden Aussagen ist wahr:
  • Anwenden der Methode   java.lang.Character.toUpperCase (char) für jedes Zeichen erzeugt das gleiche Ergebnis

%Vor%

Also meine Frage ist, warum dieses Programm nicht druckt

%Vor%

Wie in beiden Operationen werden Großbuchstaben verwendet.

    
Show Stopper 29.05.2017, 09:14
quelle

2 Antworten

10

Sie benutzen / vergleichen das deutsche ß Zeichen, dessen Großbuchstaben SS ... also müssen Sie Locale.German verwenden

%Vor%

das wird wahr .... zurückgeben.

    
ΦXocę 웃 Пepeúpa ツ 29.05.2017, 09:18
quelle
0

Ja, es ist korrekt.

  
    

if (string1.equalsIgnoreCase (string2)) ....

  

ignoriert die Klein- und Großbuchstaben von string1 und string2.

  
    

if (string1.equals (string2)) ....

  

erkennt, dass es verschiedene Buchstaben gibt und druckt nicht. Sie sind gleich. Ihr zweites Beispiel mit der Konvertierung in Großbuchstaben ist ebenfalls OK.

    
Norbert 29.05.2017 09:29
quelle

Tags und Links