Подтвердить что ты не робот

Переход на Java на aeouu

Возможные дубликаты:
Удалить диакритические знаки (ń ǹ ň ṅ ņ ņ ṇ ṋ ṉ ̈ ɲ ƞ ᶇ ȵ) из символов Unicode
Есть ли способ избавиться от акцентов и преобразовать целую строку в обычные буквы?

Как я могу это сделать? Спасибо за помощь

4b9b3361

Ответ 1

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

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

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}]", "")
);

Вывод:

Это фанковая строка

Ответ 2

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

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

Ответ 3

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

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

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

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