2009-12-26 3 views
4

Как мне преобразовать Æ и á в обычный английский символ с Java? У меня есть что-то вроде этого: Местное телевидение от Paran á. Как преобразовать его в [Парана]?Как преобразовать акцентированные буквы в обычный символ в Java

+0

Этот вопрос Дубликат http://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english -alphabet Пожалуйста, обратитесь к этому вопросу для ответа – brianpeiris

+0

Æ соответствует char с int значением 198. –

ответ

6

Посмотрите на ICU4J или JDK 1.6 ЭН:

public String removeAccents(String text) { 
    return NNormalizer.normalize(text, Normalizer.Form.NFD) 
        .replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); 
} 
+0

Вы, вероятно, имели в виду «Normalizer.normalize (текст, Normalizer.Form.NFD)» вместо «Normalizer.decompose (текст, ложь, 0) « –

+0

Я думаю, что случайно попал в старое солнце. вместо этого. Спасибо, что поймали его. – bmargulies

+0

Normalizer.Form.NFKD может быть лучше, чем Normalizer.Form.NFD для его целей, в зависимости от того, как он хочет лечить лигатуры. например: NFKD преобразует '' fi "' в '" fi "'. –

0

Насколько я знаю, нет возможности сделать это автоматически - вам нужно будет вручную заменить String.replaceAll.

String str = "Paraná"; 
str = str.replaceAll("á", "a"); 
str = str.replaceAll("Æ", "a"); 
Смежные вопросы