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