我有以下代码,对我有用。
public static String quitaDiacriticos(String s) {
s = Normalizer.normalize(s, Normalizer.Form.NFD);
s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
return s;
}
此函数删除所有重音,但包括字母 Ññ .. 因为它将它作为 Nn 返回
我通过他例如'ÑOñó'
它返回'nono'
我需要你返回'ÑOño'
您想要的是消除重音符号(á、é、í、ó、ú),但保留波浪号或波浪号(Ñ、ñ)。
您可以使用一种方法来指示仅替换重音的 unicode 字符
\u0300
和\u0301
:为此,您可以使用Normalizer.normalize()方法,该方法将 Unicode 文本转换为等效的复合或分解形式,这使您可以更轻松地对文本进行排序和搜索,因此您可以替换它:
现在作为调用上述方法的示例:
你将有作为输出: