为了账号安全,请及时绑定邮箱和手机立即绑定

NonAsciiCharacters 的 Java 正则表达式

NonAsciiCharacters 的 Java 正则表达式

慕姐4208626 2022-04-28 16:42:23
我正在使用这个小片段。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}包含所有字母


查看完整回答
反对 回复 2022-04-28
  • 1 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信