是否可以在打印流中使用正則表達式替換?替換打印流中的文本
我有一段代碼記錄了我的控制檯窗口中顯示的所有文本,但它也記錄了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);
}
}
你的問題現在解決了嗎?如果是這樣,理想情況下,您應該轉貼該答案並將其標記爲已接受。如果不是,你能解釋這是如何影響你的問題的嗎? – 2012-07-31 15:18:34
@DuncanJones這是我已經存在的代碼,我只是不知道如何編輯printstream(System.out)來將ANSI代碼從輸出流中過濾到我的文件中。 – kukelekuuk00 2012-07-31 16:10:16
我假設,其他假設,你想要一個PrintStream過濾掉ANSI(如開頭所述)。然後在編輯中討論您正在使用的其他代碼(恰好執行輸出重複)。所以只是爲了確定:你想讓你的代碼(打印到兩個輸出)也過濾出正則表達式。你不是嗎? (也許它應該從頭說明更清楚) – Javier 2012-07-31 17:35:48