gpt4 book ai didi

java - 如何从 Java 字符串中删除 ANSI 控制字符 (VT100)

转载 作者:搜寻专家 更新时间:2023-11-01 02:44:48 25 4
gpt4 key购买 nike

我正在使用自动化并使用 Jsch 连接到远程盒子并自动执行一些任务。

我在解析命令结果时遇到问题,因为有时它们会附带 ANSI Control chars .

我已经看到了 this answerthis other one但它不提供任何图书馆来做到这一点。我不想重新发明轮子,如果有的话。我对这些答案没有信心。

现在,我正在尝试这个,但我不确定它是否足够完整。

reply = reply.replaceAll("\\[..;..[m]|\\[.{0,2}[m]|\\(Page \\d+\\)|\u001B\\[[K]|\u001B|\u000F", "");

如何从 Java 字符串中删除 ANSI 控制字符 (VT100)?

最佳答案

大多数 ANSI VT100 序列的格式为 ESC [,可选择后跟一个数字或由 ; 分隔的两个数字,后跟一些不是数字或 ; 的字符。所以像

reply = reply.replaceAll("\u001B\\[[\\d;]*[^\\d;]","");

reply = reply.replaceAll("\\e\\[[\\d;]*[^\\d;]","");  // \e matches escape character

我想应该能捕获其中的大部分。可能还有其他情况您可以单独添加。 (我没有测试过这个。)

您发布的正则表达式中的一些备选方案以 \\[ 开头,而不是转义字符,这可能意味着您可能会删除一些您不应该删除的文本,或者删除部分控制序列但保留 ESC 字符。

关于java - 如何从 Java 字符串中删除 ANSI 控制字符 (VT100),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com