我有以下示例代码:
String n = "Péña";
n = Normalizer.normalize(n, Normalizer.Form.NFC);
除了n
以外,我如何规范化字符串ñ
?
不仅仅是那个字符串,我正在创建一个表单,我想保留ñ's
,以及其他没有变音符号的内容。
答案 0 :(得分:4)
将所有出现的“ñ”替换为不可打印的字符“\ 001”,因此“Péña”变为“Pé\ 001a”。然后拨打Normalizer.normalize()
将“é”分解为“e”和单独的变音标记。最后删除变音标记,并将不可打印的字符转换回“ñ”。
String partiallyNormalize(String string)
{
string = string.replace('ñ', '\001');
string = Normalizer.normalize(string, Normalizer.Form.NFD);
string = string.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
string = string.replace('\001', 'ñ');
return string;
}
你可能还想提出Easy way to remove UTF-8 accents from a string?的首选答案,在那里我学习了如何删除变音符号。