Iterieren mit string.gmatch()
Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 39 von 54.
Während string.match() das erste Vorkommen eines Musters findet, was ist, wenn Sie alle Übereinstimmungen in einem String finden müssen? Die Funktion string.gmatch() löst dies, indem sie einen Iterator zurückgibt, den Sie in einer for-Schleife verwenden können, um jede Übereinstimmung nacheinander zu verarbeiten.
Die grundlegende Syntax sieht so aus:
for match in string.gmatch(text, pattern) do
-- verarbeite jede Übereinstimmung
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+ entspricht einer oder mehreren Ziffern, und die Schleife wird für jede gefundene Zahl einmal 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
EinfachSchreiben Sie eine Funktion extractHashtags, die text entgegennimmt und alle im Text gefundenen Hashtags zurückgibt, jeden in einer eigenen Zeile.
Verwenden Sie string.gmatch(), um alle Hashtags im Text zu finden. Ein Hashtag beginnt mit #, gefolgt von einem oder mehreren Buchstaben.
Logik:
- Verwenden Sie
string.gmatch()mit dem Muster"#%a+", um alle Hashtags zu finden - Iterieren Sie durch jede Übereinstimmung und sammeln Sie diese
- Verbinden Sie alle Hashtags mit Zeilenumbruchzeichen (
\n) - Wenn keine Hashtags gefunden werden, geben Sie einen leeren String zurück
Parameter:
text(string): Der Text, der nach Hashtags durchsucht werden soll
Rückgabewert: Alle gefundenen Hashtags, jeder in einer eigenen Zeile. Wenn keine Hashtags existieren, geben Sie einen leeren String zurück (string)
Spickzettel
Die Funktion string.gmatch() gibt einen Iterator zurück, der alle Vorkommen eines Musters in einem String findet, sodass Sie jedes Suchergebnis in einer for-Schleife verarbeiten können.
Grundlegende Syntax:
for match in string.gmatch(text, pattern) do
-- jedes Suchergebnis verarbeiten
endBeispiel zum Finden aller Zahlen:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- Ausgabe:
-- 3
-- 5Beispiel zum Extrahieren aller Wörter:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Ausgabe:
-- Lua
-- is
-- a
-- powerful
-- languageProbier es selbst
function extractHashtags(text)
-- Schreibe den Code hier
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittene Table-Iteration
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 2Zusammenfassung – Schreibgeschützte Tabellen7Fortgeschrittene String-Manipulation
string.gsub() für ErsetzungenEinführung in String-Patternsstring.find()string.match()Iterieren mit string.gmatch()Rückblick – Log-File-Parser2Weitere Funktionen der Table-Bibliothek
table.concat()Tabellenerstellung & unpack()table.sort()Benutzerdefiniertes Sortieren mit FunktionenRückblick – Highscore-Tabelle