NonAsciiCharacters 的 Java 正则表达式

奇普罗蒂兹

我正在使用这个小片段。

string.replaceAll("[^\\p{ASCII}]","")

我想删除或删除 nonAsciiCharacters 但我有一个问题,例如以下字符串正在被撕裂

final String myString = "cada dia es más cercano a Dios.";

但是 á 正在被删除,这是 225 个 Ascii 字符,我认为这个正则表达式将替换所有非 ASCII 但 á 是 ascii 字符,这是为什么?

也许我都猜错了。

卡罗尔·道贝克

á(a-acute) 不是 ASCII 字符集的一部分。它是一个Unicode 字符 'LATIN SMALL LETTER A WITH ACUTE' (U+00E1)字符,并且是 Latin-1 Supplement UTF-8 块的一部分。

您可以通过运行来查看它:

"á".codePoints()
   .mapToObj(Integer::toHexString)
   .forEach(System.out::println); // e1

为了让á您可以在模式中专门将此字符列入白名单

string.replaceAll("[^\\p{ASCII}á]", "")

或将更大的组列入白名单,例如p{L}包含所有字母

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章