Menu
CoddyTech

string.find()

Teil des Abschnitts Logik und Programmablauf der Lua-Journey von Coddy. Lektion 37 von 54.

Da du jetzt Zeichenklassen verstehst, kannst du sie mit string.find() verwenden, um nach Mustern statt nach genauem Text zu suchen. Das eröffnet leistungsstarke Möglichkeiten zur Textvalidierung und -analyse.

Die Funktion string.find() funktioniert mit Mustern genauso wie mit literalen Zeichenfolgen. Sie gibt die Position zurück, an der das Muster zum ersten Mal übereinstimmt:

local text = "User123"
local position = string.find(text, "%d")
print(position)  -- Ausgabe: 5

Damit wird die erste Ziffer in der Zeichenfolge gefunden, die sich an Position 5 befindet. Du kannst auch mit Zeichenklassen in Großbuchstaben nach dem Gegenteil suchen:

local code = "ABC123"
local position = string.find(code, "%D")
print(position)  -- Ausgabe: 1

Hier entspricht %D einem beliebigen Nicht-Ziffernzeichen, sodass der erste Buchstabe an Position 1 gefunden wird.

Eine häufige Aufgabe bei der Validierung ist die Prüfung, ob eine Zeichenfolge mit einem bestimmten Muster beginnt. Du kannst den Anker ^ am Anfang eines Musters verwenden, damit es nur am Anfang der Zeichenfolge übereinstimmt:

local username = "player42"
local startsWithLetter = string.find(username, "^%a")

if startsWithLetter then
    print("Valid username")
else
    print("Username must start with a letter")
end

Dieses Muster prüft, ob die Zeichenfolge mit einem Buchstaben beginnt, und eignet sich daher für die Eingabevalidierung, wenn bestimmte Formate erforderlich sind.

Um ein Sonderzeichen selbst zu finden, etwa einen Punkt, kannst du es entweder mit % maskieren oder Muster mit einer einfachen Suche deaktivieren (1, um beim ersten Zeichen zu beginnen, true für eine einfache Suche):

print(string.find("v1.5", "%."))         -- Ausgabe: 3 3
print(string.find("v1.5", ".", 1, true))  -- Ausgabe: 3 3
print(string.find("v1.5", "."))          -- Ausgabe: 1 1 (. entspricht einem beliebigen Zeichen)
challenge icon

Aufgabe

Einfach

Schreibe eine Funktion startsWithLetter, die text entgegennimmt und zurückgibt, ob die Zeichenfolge mit einem Buchstaben beginnt.

Verwende string.find() mit dem Anker ^ und der Zeichenklasse %a, um zu prüfen, ob die Zeichenfolge mit einem Buchstaben beginnt.

Parameter:

  • text (Zeichenfolge): Die zu prüfende Zeichenfolge

Rückgabewert: true, wenn die Zeichenfolge mit einem Buchstaben beginnt, andernfalls false (boolesch)

Probier es selbst

function startsWithLetter(text)
    -- Schreibe hier Code
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 Logik und Programmablauf

Übe selbstständig: Online-Lua-Compiler