【发布时间】:2020-06-30 00:41:54
【问题描述】:
我正在编写删除一个字符串的所有变音符号的代码。
例如:áÁéÉíÍóÓúÚäÄëËïÏöÖüÜñÑ
我正在使用 Unicode 的属性InCombiningDiacriticalMarks。但我想忽略 ñ 和 Ñ 的替换。
现在我保存这两个字符,然后替换为:
s = s.replace('ñ', '\001');
s = s.replace('Ñ', '\002');
可以使用InCombiningDiacriticalMarks 忽略ñ 和Ñ 的变音符号。
这是我的代码:
public static String stripAccents(String s)
{
/*Save ñ*/
s = s.replace('ñ', '\001');
s = s.replace('Ñ', '\002');
s = Normalizer.normalize(s, Normalizer.Form.NFD);
s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
/*Add ñ to s*/
s = s.replace('\001', 'ñ');
s = s.replace('\002', 'Ñ');
return s;
}
它工作正常,但我想知道是否可以优化此代码。
【问题讨论】: