NonAsciiCharacters 的 Java 正则表达式

我正在使用这个小片段。

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

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

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

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

也许我都弄错了。


慕姐4208626
浏览 167回答 1
1回答

米琪卡哇伊

á(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}包含所有字母
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java