2013-02-01 153 views
3

所以,我有一個問題。我從記錄儀捕捉一些東西,並且輸出看起來是這樣的:刪除ASCII顏色代碼

11:41:19 [INFO] ←[35;1m[Server] hi←[m 

我需要知道如何去除這些討厭的ASCII顏色代碼(或對其進行解析)。

回答

15

如果他們是完整的,就應該由ESC(U+001B)加[加上分號分隔數字列表,加上m。 (請參閱https://stackoverflow.com/a/9943250/978917。)在這種情況下,您可以通過書寫將其刪除:

final String msgWithoutColorCodes = 
    msgWithColorCodes.replaceAll("\u001B\\[[;\\d]*m", ""); 

。 。 。或者在檢查日誌時使用less -r來利用它們。 :-)

(注:這是特定於顏色代碼。如果你還可以找到其他的ANSI轉義序列,你要籠統地說了一下,我認爲一個相當普遍的正則表達式將是\u001B\\[[;\\d]*[ -/]*[@-~]您可能會發現http://en.wikipedia.org/wiki/ANSI_escape_code。是有益的。)

如果序列完整—是,是,如果他們已經以某種方式被—錯位,那麼你就必須調查並找出什麼忙玲已經發生。

+0

@ thefiscster510:不客氣! – ruakh

+0

不錯,但有些代碼仍然存在:'[2K' – MariuszS

+0

@MariuszS:是的,我在括號內註明了這一點(倒數第二段)。 – ruakh