2010-07-11 4 views
6

라틴 알파벳을 사용하여 작성한 유럽 언어 이름을 일부 문자의 악센트 부호 (발음 구별 부호)와 비교해야합니다. 라틴 문자가 žü에있는 악센트 부호로 작성된 중부 및 동부 유럽 이름이 많이 있지만 일부 사람들은 악센트 부호없이 일반 라틴 문자를 사용하여 zu과 같은 이름을 씁니다.비교를 위해 라틴 문자에서 악센트 부호 (발음 구별 부호) 제거하지 않습니다.

내 시스템에서 mšk žilinamsk zilina과 같고 다른 모든 악센트 부호가있는 문자와 비슷하다는 것을 인식하는 방법이 필요합니다. 이 작업을 수행하는 간단한 방법이 있습니까?

답변

11

diacritical marks을 없애기 위해 java.text.Normalizerlittle regex을 사용할 수 있습니다.

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

사용 예 :

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

완벽한, 감사합니다. – Oliver

+0

반갑습니다. – BalusC

+0

당신은 어쩌면 객관적인 C에 대한 텍스트 normaliser도 알고 있나요 =) 나는 같은 문제가 있습니다. –