如何从字符串中删除ANSI代码?

问题描述 投票:0回答:1

我正在使用LUA进行字符串操作,并遇到以下问题。

使用它作为我给出的原始数据的一个例子 -

“[0; 1; 36m(网络):你说,”这里发短信。“[0; 37m”

除了删除ANSI代码之外,我想保持字符串完整。

我一直指向使用带有LUA模式匹配的gsub,但我似乎无法使模式正确。我也不确定如何准确引用发送的转义字符。

text:gsub("[\27\[([\d\;]+)m]", "")
or
text:gsub("%x%[[%d+;+]m", "")

如果成功,我想留下的所有内容,使用上面的例子,将是:

(网站):你说,“这里发短信。”

lua
1个回答
1
投票

您的字符串示例缺少转义字符,ASCII 27。

这是一种方式:

s = '\x1b[0;1;36m(Web): You say, "Text here."\x1b[0;37m'
s = s:gsub('\x1b%[%d+;%d+;%d+;%d+;%d+m','')
     :gsub('\x1b%[%d+;%d+;%d+;%d+m','')
     :gsub('\x1b%[%d+;%d+;%d+m','')
     :gsub('\x1b%[%d+;%d+m','')
     :gsub('\x1b%[%d+m','')
print(s)
© www.soinside.com 2019 - 2024. All rights reserved.