Удаление кавычек из строки

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