Java сменить ééőűú на aeouu
Возможные дубликаты:
Удалить диакритические знаки ((ǹ ň ñ ṅ ņ ṇ ṋ ṉ ̈ ɲ ƞ ɳ ȵ ȵ) из символов Unicode
Есть ли способ избавиться от акцентов и преобразовать целую строку в обычные буквы?
Как я могу это сделать? Спасибо за помощь
3 ответа
Я думаю, что ваш вопрос такой же, как эти:
- Java - избавление от акцентов и преобразование их в обычные буквы
- Преобразование строки Java в ascii
и, следовательно, ответ также тот же:
String convertedString =
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "");
Увидеть
- JavaDoc: Normalizer.normalize (String, Normalizer.Form)
- JavaDoc: Normalizer.Form.NFD
- Sun Java Tutorial: API нормализатора)
Пример кода:
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)