所以,我遇到了问题。我从Logger中捕获了一些东西,输出看起来像这样:
11:41:19 [INFO] ←[35;1m[Server] hi←[m
我需要知道如何删除那些讨厌的ASCII颜色代码(或解析它们)。
答案 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)