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

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

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

chars。

目前,我正在尝试此操作,但我不确定它是否足够完整。

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字符串中删除ANSI控制字符(VT100) 的全部内容, 来源链接: utcz.com/qa/410924.html

回到顶部