Lua:
Karakters verwijderen die overeenkomen met een patroon
Hoe:
In Lua kunnen we de gsub
functie gebruiken om voorkomens van een patroon te vervangen door een andere string - een lege string wanneer we ze willen verwijderen:
local text = "Hallo, 123 Wereld! 456"
local pattern = "%d" -- patroon dat overeenkomt met alle cijfers
local cleanedText, numOfReplacements = text:gsub(pattern, "")
print(cleanedText) -- Uitvoer: "Hallo, Wereld!"
print("Aantal vervangingen gemaakt:", numOfReplacements) -- Uitvoer: "Aantal vervangingen gemaakt: 6"
Merk op dat gsub
ook het aantal gemaakte vervangingen retourneert, wat handige informatie kan zijn.
Diepere Duik
Lua patronen zijn eenvoudiger dan de reguliere expressies die in andere talen worden gevonden, maar zijn nog steeds krachtig. Historisch gezien is Lua’s beslissing om een lichter patroonherkenningsmechanisme te implementeren geworteld in het houden van de taal zowel lichtgewicht als snel.
Alternatieven omvatten het gebruik van lussen met string.find
en string.sub
om strings handmatig te inspecteren en te manipuleren, maar dit is over het algemeen minder efficiënt dan patroonmatching met gsub
.
Wat de implementatie betreft, wanneer gsub
wordt aangeroepen met een patroon, compileert Lua dit patroon intern naar een bytecode die vervolgens wordt uitgevoerd door de patroonmatcher. Het is de moeite waard om op te merken dat er een onderscheid is tussen Lua patronen en echte reguliere expressies, waarbij de eerste een kleinere functieset heeft die constructies zoals vooruitblikken of terugverwijzingen uitsluit.
Zie Ook
- Lua 5.4 Referentiehandleiding voor
string.gsub
: https://www.lua.org/manual/5.4/manual.html#pdf-string.gsub - Programmeren in Lua (eerste editie) online beschikbaar voor het begrijpen van patronen: https://www.lua.org/pil/20.2.html
- Een online Lua patroontester om te experimenteren met Lua’s patroonmatching: https://www.lua.org/cgi-bin/demo
Onthoud, deze tools zullen je helpen je begrip van Lua’s patroonmatching te verstevigen en je een sandbox geven om je stringmanipulaties te testen. Vrolijk coderen!