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 12In 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 11Aufgabe
EinfachErstelle 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)Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren 2: Vergleichs- und logische Operatoren
GleichheitsoperatorenVergleichsoperatorenDer 'and'-OperatorDer 'or'-OperatorDer 'not'-OperatorKurzschlussauswertungTruthy- und Falsy-WerteRückblick – Einfache Logik7Grundlegende bedingte Logik
Die if-then-AnweisungDie if-then-else-AnweisungDie elseif-AnweisungWiederholung – Schatztruhe2Variablen und Datentypen
Was ist eine Variable?ZahlenZeichenkettenBoolesche WerteDer Wert „nil“Die Funktion type()NamenskonventionenRückblick – Charakterprofil5Grundlegende Ausgabe
Literale ausgebenVariablen ausgebenMehrere Werte ausgebenStrings & Variablen kombinierenDie tostring()-FunktionEingabeTypumwandlungRückblick – StatusberichtRückblick – Bis 1208Grundlagen der String-Manipulation
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Rückblick – Benutzernamen formatieren3Operatoren 1: Arithmetik & Verkettung
Arithmetische OperatorenModulo-OperatorPotenzierungsoperatorVerkettung von ZeichenkettenRangfolge der OperatorenWiederholung – Einfache Berechnungen6Projekt: Charakterwerte anzeigen
WillkommensnachrichtCharakterwerte deklarieren9Grundlagen von Funktionen
Eine Funktion deklarierenEine Funktion aufrufenFunktionen mit ParameternFunktionen mit mehreren ParameternDie Anweisung „return“Zusammenfassung – Flächenrechner12Grundlagen der Schleifen
Die while-SchleifeDie repeat-until-SchleifeDie numerische for-Schleifefor-Schleife mit SchrittweiteDie Anweisung „break“Rückblick – Countdown15Abschließende Herausforderungen
Wiederholung – SpielzugWiederholung – Einfache DatenbankWiederholung – Summe gerader ZahlenÜbe selbstständig: Online-Lua-Compiler