การลบเครื่องหมายอัญประกาศออกจากสตริง

Lua:
การลบเครื่องหมายอัญประกาศออกจากสตริง

วิธีการ:

นี่คือวิธีการเตะเครื่องหมายอัญประกาศไปเลยใน Lua:

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

print(remove_quotes('"Hello, World!"'))     -- Hello, World!
print(remove_quotes("'Goodbye, Quotes!'"))  -- Goodbye, 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