【问题标题】:Java regex for NonAsciiCharacters非 Ascii 字符的 Java 正则表达式
【发布时间】:2019-01-10 17:42:25
【问题描述】:

我正在使用这个小sn-p。

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

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

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

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

也许我都搞错了。

【问题讨论】:

标签: java regex ascii


【解决方案1】:

á (a-acute) 不是 ASCII 字符集的一部分。这是一个 Unicode Character '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} 包含所有字母

【讨论】:

  • 还有一种方法可以转义所有非Ascii字符但保留á?对不起
  • @chiperortiz 更新了答案,但解决方案将取决于你想做什么
  • 你猜对了,谢谢伙计。来自委内瑞拉的问候
猜你喜欢
  • 2013-02-19
  • 1970-01-01
  • 2011-01-08
  • 2012-11-21
  • 2013-09-22
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多