使用java.text.Normalizer
来处理这个给你。
string = Normalizer.normalize(string, Normalizer.Form.NFD);
// or Normalizer.Form.NFKD for a more "compatable" deconstruction
这会将所有重音符号与字符分开。然后,你只需要比较每个字符和一个字母,然后扔掉那些不是字母。
string = string.replaceAll("[^\\p{ASCII}]", "");
如果你的文本使用unicode
,则应改用以下代码:
string = string.replaceAll("\\p{M}", "");
对于unicode
,\\P{M}
匹配基本字形,\\p{M}
(小写)匹配每个重音。