Java有没有办法去掉重音,把一整串字母转换成普通字母?
除了使用String.replaceAll()
方法和逐个替换字母以外,还有没有更好的方法来消除重音并使这些字母规则化?例:
输入: orčpžsíáýd
输出: orcpzsiayd
它不需要包含所有带有重音符号的字母,例如俄语字母或中文字母。
回答:
使用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}
(小写)匹配每个重音。
以上是 Java有没有办法去掉重音,把一整串字母转换成普通字母? 的全部内容, 来源链接: utcz.com/qa/416897.html