除了使用 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/3322152/