非字符的Java正则表达式
我正在使用这个小片段非字符的Java正则表达式,java,regex,ascii,Java,Regex,Ascii,我正在使用这个小片段 string.replaceAll("[^\\p{ASCII}]","") 我想删除或删除非SCIAICharacter,但我有一个问题,例如,以下字符串正在被删除 final String myString = "cada dia es más cercano a Dios."; 但是á正在被删除,这是225个Ascii字符,我以为这个正则表达式会取代所有的非Ascii字符,但是á是Ascii字符,为什么 也许我完全弄错了。á(a-acute)不是ASCII字符集的一
string.replaceAll("[^\\p{ASCII}]","")
我想删除或删除非SCIAICharacter,但我有一个问题,例如,以下字符串正在被删除
final String myString = "cada dia es más cercano a Dios.";
但是á正在被删除,这是225个Ascii字符,我以为这个正则表达式会取代所有的非Ascii字符,但是á是Ascii字符,为什么
也许我完全弄错了。á
(a-acute)不是ASCII字符集的一部分。这是一个字符,也是拉丁语1补遗UTF-8块的一部分
您可以通过运行以下命令查看它:
"á".codePoints()
.mapToObj(Integer::toHexString)
.forEach(System.out::println); // e1
要保留á
,您可以在模式中明确列出此字符
string.replaceAll("[^\\p{ASCII}á]", "")
或者白名单一个较大的组,例如
p{L}
包含所有字母No,a
不是ASCII字符,它是ANSI字符。有一种方法可以转义所有非ASCII字符,但保留字符?sorry@chiperortiz更新了答案,但解决方案将取决于你想做什么。你猜对了,谢谢,伙计。委内瑞拉致以最良好的问候