Возможные дубликаты:
Удалить диакритические знаки (ń ǹ ň ṅ ņ ņ ṇ ṋ ṉ ̈ ɲ ƞ ᶇ ȵ) из символов Unicode
Есть ли способ избавиться от акцентов и преобразовать целую строку в обычные буквы?
Как я могу это сделать? Спасибо за помощь
Возможные дубликаты:
Удалить диакритические знаки (ń ǹ ň ṅ ņ ņ ṇ ṋ ṉ ̈ ɲ ƞ ᶇ ȵ) из символов Unicode
Есть ли способ избавиться от акцентов и преобразовать целую строку в обычные буквы?
Как я могу это сделать? Спасибо за помощь
Я думаю, что ваш вопрос такой же:
и, следовательно, ответ тоже одинаков:
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)