2010-07-11 8 views
6

Ich muss die Namen der europäischen Orte, die mit dem lateinischen Alphabet geschrieben sind, mit Akzenten (Diakritika) für einige Zeichen vergleichen. Es gibt viele mittel- und osteuropäische Namen, die mit Akzentzeichen wie lateinische Zeichen auf ž und ü geschrieben sind, aber einige Leute schreiben die Namen nur mit den regulären lateinischen Zeichen ohne Akzentzeichen wie z und u.Entfernen von Akzenten (Diakritika) aus lateinischen Zeichen zum Vergleich

Ich brauche eine Möglichkeit, mein System zu erkennen, zum Beispiel mšk žilina ist das gleiche wie msk zilina, und ähnlich für alle anderen akzentuierten Zeichen verwendet. Gibt es einen einfachen Weg, dies zu tun?

Antwort

11

Sie können java.text.Normalizer und little regex verwenden, um die diacritical marks loszuwerden.

public static String removeDiacriticalMarks(String string) { 
    return Normalizer.normalize(string, Form.NFD) 
     .replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); 
} 

Anwendungsbeispiel:

String text = "mšk žilina"; 
String normalized = removeDiacriticalMarks(text); 
System.out.println(normalized); // msk zilina 
+0

Perfect, danke. – Oliver

+0

Gern geschehen. – BalusC

+0

vielleicht kennen Sie einen Text Normalisierer auch für das Ziel C =) Ich habe das gleiche Problem –

Verwandte Themen