Menu
CoddyTech

string.find()

Teil des Abschnitts Grundlagen der Lua-Journey von Coddy. Lektion 48 von 90.

Die Funktion string.find() ist ein leistungsstarkes Werkzeug zum Durchsuchen von Zeichenketten. Mit ihr kannst du in einer größeren Zeichenkette nach einer kleineren Zeichenkette (einem sogenannten Muster) suchen und erfährst genau, an welcher Stelle sie gefunden wurde.

Hier ist die grundlegende Syntax:

string.find(text, pattern)

Wenn string.find() das Muster erfolgreich findet, gibt es zwei Zahlen zurück: die Startposition und die Endposition der Übereinstimmung. Wird das Muster nicht gefunden, gibt es nil zurück.

Hier ist ein einfaches Beispiel:

local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos)  -- Ausgabe: 5 12

In diesem Beispiel beginnt das Wort „treasure“ an Position 5 und endet an Position 12 im Satz.

Eine Sache solltest du wissen: Der Text, nach dem du suchst, ist ein Muster, kein einfacher Text. Einige Zeichen haben in Mustern eine besondere Bedeutung: . % - + * ? [ ] ^ $ ( ). Du lernst sie später im Kurs kennen. Buchstaben, Ziffern und Leerzeichen stimmen mit sich selbst überein, wie im Beispiel oben, aber ein Sonderzeichen kann mehr finden, als du beabsichtigt hast:

print(string.find("Score: 105", "1.5"))  -- gibt aus: 8 10 (der . entsprach der 0)

Um genau nach dem geschriebenen Text zu suchen, füge zwei weitere Argumente hinzu: 1 (beginne beim ersten Zeichen) und true (eine einfache Suche ohne Sonderzeichen):

print(string.find("Score: 105", "1.5", 1, true))   -- Ausgabe: nil
print(string.find("Version 1.5", "1.5", 1, true))  -- Ausgabe: 9 11
challenge icon

Aufgabe

Einfach

Erstelle einen Detektor für geheime Nachrichten, der in einer längeren Textnachricht nach einem versteckten Codewort sucht. Deklariere eine Variable namens message und weise ihr den Wert "The ancient treasure lies beneath the old oak tree" zu. Verwende die Funktion string.find(), um innerhalb der Nachricht nach dem Wort "treasure" zu suchen, und speichere die Start- und Endposition in Variablen namens startPos und endPos. Gib beide Positionswerte in separaten Zeilen aus.

Probier es selbst

-- Deklariere die Variable message
local message = "The ancient treasure lies beneath the old oak tree"

-- TODO: Schreibe hier deinen Code, um das Wort "treasure" zu finden und die Positionen zu speichern

-- Gib die Positionen aus
print(startPos)
print(endPos)
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 Grundlagen

Übe selbstständig: Online-Lua-Compiler