标准化除ñ以外的字符串

Ger*_*rdo 3 java normalize

我有以下示例代码:

String n = "Péña";
n = Normalizer.normalize(n, Normalizer.Form.NFC);
Run Code Online (Sandbox Code Playgroud)

如何标准化n除以外的字符串ñ

而且不仅是该字符串,我还在制作表单,并且我希望保留ñ's,以及其他所有没有变音符号的内容。

Huw*_*ers 5

将所有出现的“ñ”替换为不可打印的字符“ \ 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;
}
Run Code Online (Sandbox Code Playgroud)

您可能还想投票赞成从字符串中删除UTF-8重音的简单方法的首选答案,在那里我学会了如何删除变音标记。