我有一组八进制值(0177-0377)。每当我在字符串中找到这些值时,都必须替换为 ?.
String a= "sccce¼»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕerferferfer";
for (int i = 0177; i<= 0377 ; i++)
{
char x= (char) i;
a= a.replaceAll(Character.toString(x), "?");
}
System.out.print(a);
但是当我们有小文件时这看起来不错,但我必须在 1TB 文件中执行此操作。
我们如何使用正则表达式来完成此任务。
最佳答案
您可以使用此正则表达式[^\p{ASCII}]
,它替换所有非ASCII
字符:
a.replaceAll("[^\\p{ASCII}]", "?")
输出:
sccce????????????????????????????erferferfer
<小时/>
您必须从 link 中找到十六进制中八进制字符的表示形式0177
由 \x7F
表示,0377
由 FF
对于您的情况,您可以使用:
a.replaceAll("[\\x7F-\\xFF]", "?")
关于Java - 正则表达式替换字符串中的八进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44136061/