Fjerne anførselstegn fra en streng

Lua:
Fjerne anførselstegn fra en streng

Hvordan:

Slik kicker du de anførselstegnene til kanten i Lua:

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

print(remove_quotes('"Hei, Verden!"'))     -- Hei, Verden!
print(remove_quotes("'Farvel, Anførselstegn!'"))  -- Farvel, Anførselstegn!

Bingo! De anførselstegnene forsvant som sokker i en tørketrommel.

Dypdykk

Folk har skrubbet bort anførselstegn fra strenger siden språk kunne håndtere tekst, som praktisk talt er for alltid. I Lua, gjør gsub-funksjonen det tunge løftet, som håndterer mønstre som en skalpell for å fjerne anførselstegn. Alternativer? Sikkert, du kunne gå for regex i språk som støtter det, eller skrive din egen løkke som tygger gjennom hver karakter (gjesp, men hei, det er din tid).

Luas mønstersøking gir deg styrken av en regex-lite opplevelse uten å importere et helt bibliotek. Caret-tegnet (^) og dollartegnet ($) matcher starten og slutten av strengen, respektivt; %p matcher hvilket som helst tegnsettingstegn. Etter å ha ristet av seg den ledende og avsluttende tegnsettingen, fanger vi alt annet med (.*), og erstatter hele treffet med den fangstgruppen ved å bruke " %1".

Husk at Luas mønstersøking ikke er så potent som fullverdige regex-motorer – for eksempel, den kan ikke telle eller backtracke. Denne enkelheten er både en velsignelse og en forbannelse, avhengig av hvilke anførselstegn du prøver å håndtere og hvor de gjemmer seg.

Se Også

Dykk dypere inn i Luas mønstersøking med PiL (Programming in Lua)-boken: http://www.lua.org/pil/20.2.html

For ren eleganse, sjekk ut hvordan andre språk gjør det for sammenligning, start med Pythons str.strip: https://docs.python.org/3/library/stdtypes.html#str.strip