我正在使用这个小片段。string.replaceAll("[^\\p{ASCII}]","")我想删除或删除 nonAsciiCharacters 但我有一个问题,例如以下字符串正在被撕裂final String myString = "cada dia es más cercano a Dios.";但是 á 正在被删除,这是 225 Ascii 字符,我认为这个正则表达式将替换所有 NON-ASCII 但 á 是 ascii 字符,这是为什么?也许我都弄错了。
1 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
á(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}包含所有字母
添加回答
举报
0/150
提交
取消