Iteration mit string.gmatch()
Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 39 von 54.
Während string.match() das erste Vorkommen eines Musters findet, was ist, wenn du alle Übereinstimmungen in einer Zeichenkette finden musst? Die Funktion string.gmatch() löst dieses Problem, indem sie einen Iterator zurückgibt, den du in einer for-Schleife verwenden kannst, um jede Übereinstimmung einzeln zu verarbeiten.
Die grundlegende Syntax sieht so aus:
for match in string.gmatch(text, pattern) do
-- verarbeite jedes Match
endHier ist ein Beispiel, das alle Zahlen in einem string findet:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- Ausgabe:
-- 3
-- 5Das Muster %d+ stimmt mit einer oder mehreren Ziffern überein, und die Schleife wird einmal für jede gefundene Zahl ausgeführt.
Du kannst auch alle Wörter aus einem Satz extrahieren:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Ausgabe:
-- Lua
-- is
-- a
-- powerful
-- languageAufgabe
EinfachSchreibe eine Funktion extractHashtags, die text entgegennimmt und alle im Text gefundenen Hashtags zurückgibt, jeweils in einer eigenen Zeile.
Verwende string.gmatch(), um alle Hashtags im Text zu finden. Ein Hashtag beginnt mit #, gefolgt von einem oder mehreren Buchstaben.
Logik:
- Verwende
string.gmatch()mit dem Muster"#%a+", um alle Hashtags zu finden - Iteriere über jeden Treffer und sammle sie
- Verbinde alle Hashtags mit Zeilenumbruchzeichen (
\n) - Wenn keine Hashtags gefunden werden, gib eine leere Zeichenkette zurück
Parameter:
text(string): Der Text, in dem nach Hashtags gesucht werden soll
Rückgabewert: Alle gefundenen Hashtags, jeweils in einer eigenen Zeile. Wenn keine Hashtags vorhanden sind, gib eine leere Zeichenkette zurück (string)
Probier es selbst
function extractHashtags(text)
-- Schreibe hier den Code
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmablauf
1Fortgeschrittene Tabelleniteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Rückblick – Read-Only-Tabelle7Fortgeschrittene String-Manipulation
string.gsub() zur ErsetzungEinführung in String-Musterstring.find()string.match()Iteration mit string.gmatch()Zusammenfassung – Parser für Logdateien2Weitere Funktionen der Tabellenbibliothek
table.concat()Tabellenkonstruktion & unpack()table.sort()Eigene Sortierung mit FunktionenRückblick – Highscore-TabelleÜbe selbstständig: Online-Lua-Compiler