#lua
#lua
Вопрос:
Я работаю над обработкой строк с использованием LUA и у меня возникли проблемы со следующей проблемой.
Используя это в качестве примера исходных данных, которые мне даны —
«[0;1;36m(Web): Вы говорите: «Текст здесь».[0;37m»
Я хочу сохранить строку неповрежденной, за исключением удаления кодов ANSI.
Мне указали на использование gsub с сопоставлением шаблона LUA, но, похоже, я не могу получить правильный шаблон. Я также не уверен, как точно ссылаться на отправленный escape-символ.
text:gsub("[27[([d;] )m]", "")
or
text:gsub("%x%[[%d ; ]m", "")
В случае успеха все, с чем я хочу остаться, используя приведенный выше пример, было бы:
(Веб): Вы говорите: «Текст здесь».
Комментарии:
1. Что такое «коды ANSI»?
2. @NicolBolas это выглядит как en.m.wikipedia.org/wiki/ANSI_escape_code
Ответ №1:
В вашем примере со строкой отсутствует escape-символ 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)