3 ответа

Я думаю, что ваш вопрос такой же, как эти:

и, следовательно, ответ также тот же:

String convertedString = 
       Normalizer
           .normalize(input, Normalizer.Form.NFD)
           .replaceAll("[^\\p{ASCII}]", "");

Увидеть

Пример кода:

final String input = "Tĥïŝ ĩš â fůňķŷ Šťŕĭńġ";
System.out.println(
    Normalizer
        .normalize(input, Normalizer.Form.NFD)
        .replaceAll("[^\\p{ASCII}]", "")
);

Выход:

Это в стиле фанк

Ты можешь использовать java.text.Normalizer отделить базовые буквы и диакритические знаки, а затем удалить последние с помощью регулярного выражения:

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

Во-первых, вы не должны. Эти символы обладают особыми фонетическими свойствами, которые нельзя игнорировать.

Способ их преобразования заключается в создании Map которая содержит каждую пару:

Map<Character, Character> map = new HashMap<Character, Character>();
map.put('á', 'a');
map.put('é', 'e');
//etc..

а затем зациклить символы в строке, создавая новую строку, вызывая map.get(currentChar)

Другие вопросы по тегам