一尘不染

Java有没有办法去掉重音,把一整串字母转换成普通字母?

java

除了使用String.replaceAll()方法和逐个替换字母以外,还有没有更好的方法来消除重音并使这些字母规则化?例:

输入: orčpžsíáýd

输出: orcpzsiayd

它不需要包含所有带有重音符号的字母,例如俄语字母或中文字母。


阅读 505

收藏
2020-02-29

共1个答案

一尘不染

使用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}(小写)匹配每个重音。

2020-02-29