【问题标题】:How to remove ANSI codes from a string?如何从字符串中删除 ANSI 代码?
【发布时间】:2019-03-24 22:12:40
【问题描述】:

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

以我给出的原始数据为例-

"[0;1;36m(Web):你说,“这里是文字。”[0;37m"

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

有人指出我将 gsub 与 LUA 模式匹配一​​起使用,但我似乎无法让模式正确。我也不确定如何准确引用发送的转义字符。

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

如果成功,使用上面的例子,我想剩下的就是:

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

【问题讨论】:

标签: lua


【解决方案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)

【讨论】:

    猜你喜欢
    • 2016-07-21
    • 2020-01-04
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多