除了使用String.replaceAll()方法和逐个替换字母以外,还有没有更好的方法来消除重音并使这些字母规则化?例:
String.replaceAll()
输入: orčpžsíáýd
orčpžsíáýd
输出: orcpzsiayd
orcpzsiayd
它不需要包含所有带有重音符号的字母,例如俄语字母或中文字母。
使用java.text.Normalizer来处理这个给你。
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,则应改用以下代码:
unicode
string = string.replaceAll("\\p{M}", "");
对于unicode,\\P{M}匹配基本字形,\\p{M}(小写)匹配每个重音。
\\P{M}
\\p{M}