有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java删除ASCII颜色代码

所以,我有个问题。我从一个记录器中捕获了一些东西,输出结果如下所示:

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

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


共 (2) 个答案

  1. # 1 楼答案

    如果它们是完整的,它们应该由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很有帮助。)

    如果序列是而不是完整的-也就是说,如果它们以某种方式被损坏-那么你必须调查并准确地找出发生了什么损坏