Menu
Coddy logo textTech

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
end

Hier 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
-- 5

Das 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
-- language
challenge icon

Aufgabe

Einfach

Schreiben 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
end

Beispiel 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
-- 5

Beispiel 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
-- language

Probier es selbst

function extractHashtags(text)
    -- Schreibe den Code hier
end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow