我想规范化所有扩展的ASCII字符,但不包括变音符号。

如果我想加入变音符号,我会争取:

Normalizer.normalize(value, Normalizer.Form.NFKD)
    .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

但是如何排除德国变音符?

结果,我想得到:

来源:üöäâÇæôøñÁ
预期结果:üöäaCaeoonA或类似的结果

最佳答案

从这里我看到2个解决方案,我猜第一个解决方案很脏,第二个实现起来很无聊。

  • 从您想要用变音符规范化字符的字符串中删除,然后在规范化后放回它们。
  • 不要使用预置模式p{InCombiningDiacriticalMarks}。而是建立自己的(不包括变音符号)。
    看一眼 :
  • Regex: what is InCombiningDiacriticalMarks?
  • Unicode blocks
  • Combining Diacritical MarksCombining Diacritical Marks for Symbols
  • 10-07 16:34