除了使用 String.replaceAll()
之外,还有更好的方法来消除重音并使这些字母变得规则吗?方法并一一替换字母?
示例:
输入:orčpžsíáýd
输出:orcpzsiayd
它不需要包含所有带有重音符号的字母,例如俄语字母或中文字母。
最佳答案
使用java.text.Normalizer
为您处理这个问题。
string = Normalizer.normalize(string, Normalizer.Form.NFD);
// or Normalizer.Form.NFKD for a more "compatible" deconstruction
这会将所有重音符号与字符分开。然后,您只需将每个字符与字母进行比较,并丢弃不是的字符。
string = string.replaceAll("[^\\p{ASCII}]", "");
如果您的文本采用 unicode,则应使用以下内容:
string = string.replaceAll("\\p{M}", "");
对于 unicode,\\P{M}
匹配基本字形,\\p{M}
(小写)匹配每个重音符号。
感谢 GarretWilson 的指点和 regular-expressions.info伟大的 unicode 指南。
关于java - 有没有办法去掉重音符号并将整个字符串转换为常规字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866965/