הסרת מרכאות ממחרוזת

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 עם הספר Programming in Lua (PiL): http://www.lua.org/pil/20.2.html

לחוויה של יופי צרוף, גלו איך שפות אחרות עושות זאת להשוואה, מתחילים עם str.strip ב-Python: https://docs.python.org/3/library/stdtypes.html#str.strip