除了使用之外,是否有更好的方法来消除重音并使这些字母变得规则String.replaceAll()
方法并一一替换字母?
例子:
Input: orčpžsíáýd
Output: orcpzsiayd
它不需要包含所有带有重音符号的字母,例如俄语字母表或中文字母表。
Use 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}", "");
对于统一码,\\P{M}
匹配基本字形并且\\p{M}
(小写)匹配每个重音。
感谢加勒特·威尔逊 (Garrett Wilson) 的指点和正则表达式.info伟大的 unicode 指南。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)