【发布时间】:2012-07-31 15:05:30
【问题描述】:
是否可以在打印流中替换正则表达式?
我有一段代码记录了我的控制台窗口中显示的所有文本,但它也记录了 ANSI 转义码。
我发现这个正则表达式 "s:\x1B\[[0-9;]*[mK]::g" 可以删除它们,但它只适用于字符串。
有没有办法将正则表达式替换应用于恒定的字符串流并过滤掉 ANSI 转义码?
如果可能的话,尽可能地简化它,在编程方面我还是一个新手,我只是在一个已经有的程序上构建。
编辑:
我有这段代码,我在其他地方发现堆栈溢出,这允许我同时流式传输到日志文件和控制台。
这就是我使用的,然后我在这之后设置了发球台。
Logging tee = new Logging(file, System.out);
.
package com.md_5.mc.chat;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
public class Logging extends PrintStream
{
private final PrintStream second;
public Logging(OutputStream main, PrintStream second)
{
super(main);
this.second = second;
}
public void close()
{
super.close();
}
public void flush()
{
super.flush();
this.second.flush();
}
public void write(byte[] buf, int off, int len)
{
super.write(buf, off, len);
this.second.write(buf, off, len);
}
public void write(int b)
{
super.write(b);
this.second.write(b);
}
public void write(byte[] b) throws IOException
{
super.write(b);
this.second.write(b);
}
}
【问题讨论】:
-
那你的问题现在解决了吗?如果是这样,理想情况下,您应该将其重新发布为答案并将其标记为已接受。如果不是,您能否解释一下这对您的问题有何影响?
-
@DuncanJones 这是我已经存在的代码,我只是不知道如何编辑打印流 (System.out) 以将 ANSI 代码从输出流中过滤到我的文件中。
-
我假设,其他假设,您想要一个过滤掉 ANSI 的 PrintStream(如开头所述)。然后在编辑中它谈论您正在使用的其他代码(恰好进行输出重复)。所以只是为了确定:你想让你的代码(打印到两个输出)也过滤掉一个正则表达式。不是吗? (也许应该从一开始就说得更清楚)
标签: java regex replace printstream