Lua:
Удаление кавычек из строки
Как это сделать:
Вот как избавиться от кавычек в Lua:
local function remove_quotes(str)
return (str:gsub("^%p(.*)%p$", "%1"))
end
print(remove_quotes('"Привет, мир!"')) -- Привет, мир!
print(remove_quotes("'До свидания, кавычки!'")) -- До свидания, кавычки!
Вуаля! Кавычки исчезли, как носки в стиральной машине.
Подробнее
Люди удаляли кавычки из строк с тех пор, как языки программирования научились обрабатывать текст, что, в общем-то, уже очень давно. В Lua функция gsub
выполняет всю тяжёлую работу, используя шаблоны как скальпель, чтобы вырезать кавычки. Альтернативы? Конечно, вы могли бы использовать regex в языках, которые его поддерживают, или написать свой собственный цикл, который будет перебирать каждый символ (ой, но это ваше время).
Сопоставление шаблонов в Lua дает вам ощущение regex-lite без необходимости импортировать целую библиотеку. Угловая скобка (^
) и знак доллара ($
) соответствуют началу и концу строки соответственно; %p
соответствует любому знаку пунктуации. После того как мы избавимся от ведущей и завершающей пунктуации, мы захватываем все остальное с помощью (.*),
и заменяем весь совпадающий текст этой захваченной группой, используя " %1"
.
Не забывайте, что сопоставление шаблонов в Lua не так мощно, как полноценные движки regex - например, оно не может считать или отслеживать. Эта простота является одновременно и благом, и проклятьем, в зависимости от того, какие кавычки вы пытаетесь обработать и где они скрываются.
См. также
Погрузитесь глубже в сопоставление шаблонов Lua с книгой PiL (Programming in Lua): http://www.lua.org/pil/20.2.html
Для непревзойденной элегантности проверьте, как это делают в других языках для сравнения, начиная с str.strip
в Python: https://docs.python.org/3/library/stdtypes.html#str.strip