Ta bort citattecken från en sträng

Lua:
Ta bort citattecken från en sträng

Hur man gör:

Så här sparkar du citattecknen till trottoaren i Lua:

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

print(remove_quotes('"Hej, världen!"'))     -- Hej, världen!
print(remove_quotes("'Hejdå, Citattecken!'"))  -- Hejdå, Citattecken!

Bingo! De där citattecknen försvann som strumpor i en torktumlare.

Fördjupning

Folk har skrubbat bort citattecken från strängar sedan språk kunde hantera text, vilket är i stort sett för alltid. I Lua gör gsub-funktionen den tunga lyftningen, använder mönster som en skalpell för att avlägsna citattecken. Alternativ? Visst, du kan gå på regex i språk som stöder det, eller skriva din egen loop som tuggar igenom varje tecken (gäsp, men hej, det är din tid).

Luas mönstermatchning ger dig kraften av en regex-lite-upplevelse utan att importera ett helt bibliotek. Cirkumflexet (^) och dollar tecknet ($) matchar början och slutet av strängen respektive; %p matchar alla skiljetecken. Efter att ha skakat av den ledande och avslutande skiljetecken fångar vi allt annat med (.*), och ersätter hela träffen med den fångargruppen med hjälp av " %1".

Kom ihåg att Luas mönstermatchning inte är lika kraftfull som fullfjädrade regex-motorer – till exempel kan den inte räkna eller backtracka. Denna enkelhet är både en välsignelse och en förbannelse, beroende på vilka citattecken du brottas med och var de gömmer sig.

Se även

Dyk djupare in i Luas mönstermatchning med PiL (Programming in Lua) boken: http://www.lua.org/pil/20.2.html

För ren elegans, kolla in hur andra språk gör det för jämförelse, starta med Pythons str.strip: https://docs.python.org/3/library/stdtypes.html#str.strip