Lua:
Slette tegn som matcher et mønster
Hvordan gjøre det:
local tekst = "Hallo, Verden! 123"
local mønster = "[0-9]"
-- Fjerne tall fra teksten
local renset_tekst = tekst:gsub(mønster, "")
print(renset_tekst) -- Output: Hallo, Verden!
En annen måte å fjerne spesifikke tegn på er ved å bruke tegnsett:
local tekst = "Fjern alle vokaler."
local mønster = "[aeiouyAEIOUY]"
-- Fjerner alle vokaler fra teksten
local uten_vokaler = tekst:gsub(mønster, "")
print(uten_vokaler) -- Output: Fjrn ll vklr.
Dypdykk
I Lua er string.gsub
en innebygd funksjon som er brukt for mønstersletting. Den tar en streng, et mønster å søke etter, og en erstatningstekst, returnerer den endrede strengen og antall erstattinger. Lua’s mønstersystem er enklere enn vanlige uttrykk, men kraftig nok for de fleste oppgaver. Det har eksistert siden Lua 1.0 og har utviklet seg siden da.
Alternativt kan man bruke lualibs, som lpeg eller rexlib, for mer avansert mønstersøk og bearbeiding. Disse bibliotekene tilbyr funksjonaliteter nærmere tradisjonelle regulære uttrykk.
Ved implementasjon, tenk på ytelsen ved å fjerne tegn. Store tekster og komplekse mønstre kan gjøre gsub
tregere. I slike tilfeller, vurder å dele opp prosessen eller optimalisere mønstrene.
Se også
- Lua’s offisielle dokumentasjon om mønstertilpasning: https://www.lua.org/manual/5.4/manual.html#6.4.1
- ‘Programming in Lua’, for en grundig gjennomgang av strengmønstre: https://www.lua.org/pil/20.2.html
- RexLib: http://rrthomas.github.io/lrexlib/