可能是重复问题:
如何从 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)
创建一个新的字符串。