我正在使用这个小片段。
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] 删除。
我来说两句