2010-07-11 8 views
6

Мне нужно сравнить названия европейских мест, которые написаны латинским алфавитом с акцентами (диакритики) на некоторых персонажах. Есть много имен Центральной и Восточной Европы, которые написаны с такими же знаками, как латинские символы, на ž и ü, но некоторые люди пишут имена только с использованием обычных латинских символов без знаков акцента, таких как z и u.Удаление знаков акцента (диакритических знаков) из латинских символов для сравнения

Мне нужен способ распознать мою систему, например mšk žilina, такой же, как msk zilina, и аналогичный для всех других символов с акцентом. Есть ли простой способ сделать это?

ответ

11

Вы можете использовать java.text.Normalizer и little regex, чтобы избавиться от diacritical marks.

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 =) У меня такая же проблема –

 Смежные вопросы

  • Нет связанных вопросов^_^