【发布时间】:2017-10-23 11:31:59
【问题描述】:
我有一组八进制值,比如 (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 文件中执行此操作。
我们如何使用正则表达式来完成这项任务。
【问题讨论】:
-
文字“177”和“377”不是八进制文字 - 它们是十进制文字。如果您想要八进制值,请使用 0177 和 0377。也不清楚为什么您认为正则表达式是这里的解决方案...
-
这种情况的最佳解决方案是什么?
-
好吧,我会使用
Reader,一次读取一大块文本(进入 char 数组),然后遍历 char 数组,替换该范围内的任何值,然后写入该块发送到Writer。重复直到你读完文件中的所有内容。 -
正则表达式也使用循环。目前尚不清楚您要解决什么问题。您想替换八进制数,但您正在将其转换为字符。目前尚不清楚您是否只有 ASCII 或整个 UTF 字符集。你的问题有很多不清楚/错误的地方,我很头疼。如果要替换八进制字符串,请清楚地重写?或者只是在八进制数中具有给定位置的 Unicode 字符。