Видалення лапок зі строки

Lua:
Видалення лапок зі строки

Як це зробити:

Ось як позбутися лапок у Lua:

local function remove_quotes(str)
  return (str:gsub("^%p(.*)%p$", "%1"))
end

print(remove_quotes('"Привіт, Світ!"'))     -- Привіт, Світ!
print(remove_quotes("'Бувай, Лапки!'"))  -- Бувай, Лапки!

Бінго! Ці лапки зникли як шкарпетки в сушильній машині.

Поглиблений розгляд

Люди видаляють лапки з рядків з того часу, як мови почали обробляти текст, що є майже завжди. У Lua функція gsub виконує основну роботу, використовуючи шаблони як скальпель для видалення лапок. Альтернативи? Звісно, ви могли б використовувати регулярні вирази в мовах, які їх підтримують, або написати власний цикл, який обробляє кожен символ (зітхання, але гей, це ваш час).

Застосування шаблонів у Lua дає вам відчуття досвіду з легкого використання регулярних виразів без імпортування цілої бібліотеки. Шеврон (^) та знак долара ($) відповідають початку та кінцю рядка відповідно; %p відповідає будь-якому розділовому знаку. Після того, як ми позбуваємося початкових та кінцевих розділових знаків, ми захоплюємо все інше за допомогою (.*), і замінюємо весь збіг цією групою захоплення за допомогою " %1".

Пам’ятайте, що використання шаблонів у Lua не є настільки потужним, як повноцінні регулярні вирази — наприклад, воно не може рахувати або відступати назад. Ця простота є одночасно благословенням і прокляттям, залежно від того, які лапки ви ловите і де вони ховаються.

Дивіться також

Поглиблено познайомитесь із застосуванням шаблонів у Lua за допомогою книги PiL (Програмування в Lua): http://www.lua.org/pil/20.2.html

Для абсолютної елегантності подивіться, як це роблять інші мови для порівняння, починаючи з str.strip в Python: https://docs.python.org/3/library/stdtypes.html#str.strip