答案 1
我认为您的问题与以下问题相同:
因此,答案也是相同的:
String convertedString =
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "");
看
- JavaDoc: Normalizer.normalize(String, Normalizer.Form)
- JavaDoc: Normalizer.Form.NFD
- Sun Java Tutorial: Normalizer's API)
示例代码:
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}+", "");
}
推荐