2012-10-17 7 views
13

I 2 Strings vergleichen wollen, dieWie vergleichen nicht Englisch Zeichen mit Akzenten

String1 = debarquer 
String2 = débárquér 

Beim Vergleich über 2 Strings in ihnen etwas nicht englischen Charakter haben, sollten sie gleich sagen.

+0

Mach dir keine Sorgen, wenn Ihr 'String 'enthält nicht-ASCII-Werte. Sie sollten sie mit 's1.equals (s2)' vergleichen, vorausgesetzt beide sind 'String's und haben keinen' null' Wert. –

+0

'if (String1.equals (String2)) {/ * etwas tun * /}' –

Antwort

0
//add null check for string1 
if(string1.equals(string2)){ 
    //print/return equals 
} else{ 
    //print/return not equal 
} 
-1
if (string1 != null){ 
if (string1.equals(string2)){ 
System.out.println("Equal"); 
} 
else{ 
System.out.println("Not Equal"); 
} 
22

Verwenden der Collator-Klasse. Hier können Sie eine Stärke und ein Gebietsschema festlegen und die Zeichen entsprechend vergleichen.

Es sollte etwas ähnliches wie dies sein (Anmerkung: Ich habe das Programm nicht getestet)

import java.text.Collator; 
import java.util.Locale; 

public class CollatorExp { 

    public static void main(String[] args) { 
     Collator collator = Collator.getInstance(Locale.FRENCH); 
     collator.setStrength(Collator.PRIMARY); 

     if (collator.compare("débárquér", "debarquer") == 0) { 
      System.out.println("Both Strings are equal"); 
     } else { 
      System.out.println("Both Strings are not equal"); 
     } 
    } 
} 

UPDATE: Ein Punkt zu beachten ist, dass „débárquér“ und „debarquer“ sollte nie als in Betracht gezogen werden gleich. Aber wenn Sie sie aussortieren, wollen Sie nicht, dass sie anhand ihres ASCII-Werts verglichen werden. Nehmen Sie zum Beispiel "Joao" und "João": Wenn Sie sie basierend auf ASCII sortieren, könnten Sie Joao, John, João bekommen. Das ist offensichtlich nicht gut. Mit der Collator-Klasse wird das korrekt gehandhabt.

+0

Warum postest du Code, den du nicht getestet hast? –

+0

Ich vergleiche '' '' '' '' so mit der '' equals' Methode und es gibt kein Problem. Was wäre der große Unterschied? –

-3

Es gibt eine Möglichkeit, 2 Zeichenfolgenwerte in Java zu vergleichen.

 if(String1.equals(String2)) 
     { 
      System.out.println("Equal"); 
     } 
     else 
     { 
      System.out.println("Not equal"); 
     } 
11

Um dies zu tun, Sie Normalizer Klasse Java verwenden können. Nur normalisieren die Streicher, dann die diakritischen Zeichen Streifen aus, etwa so:

String stripAccents(String string) { 
    string = Normalizer.normalize(string, Normalizer.Form.NFD); 
    string = string.replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); 
} 

Anschließend können Sie diese verwenden, um die beiden Strings minus die Akzente zu vergleichen:

stripAccents(string1).equals(stripAccents(string2)) 
Verwandte Themen