删除ASCII颜色代码

时间:2013-02-01 18:15:24

标签: java colors replace ascii color-codes

所以,我遇到了问题。我从Logger中捕获了一些东西,输出看起来像这样:

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

我需要知道如何删除那些讨厌的ASCII颜色代码(或解析它们)。

2 个答案:

答案 0 :(得分:22)

如果它们完好无损,则应包括ESC(U+001B)加[加上以分号分隔的数字列表,加上m。 (参见https://stackoverflow.com/a/9943250/978917。)在这种情况下,您可以通过以下方式删除它们:

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

。 。 。或者您可以在检查日志时使用less -r来利用它们。 : - )

(注意:这是特定于颜色代码。如果你也找到其他ANSI转义序列,你会想要概括一点。我认为一个相当普遍的正则表达式是\u001B\\[[;\\d]*[ -/]*[@-~]。你可能会发现{ {3}}要有所帮助。)

如果序列完好无损 - 也就是说,如果它们已经被某种方式破坏了 - 那么你将不得不调查并弄清楚究竟发生了什么错误。

答案 1 :(得分:-1)

这个正则表达式怎么样

replaceAll("\\d{1,2}(;\\d{1,2})?", "");

根据此处的格式:http://bluesock.org/~willg/dev/ansi.html