string.find()
Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 37 von 54.
Nachdem Sie nun Zeichenklassen verstanden haben, können Sie diese mit string.find() verwenden, um nach Mustern anstatt nach exaktem Text zu suchen. Dies eröffnet leistungsstarke Möglichkeiten für die Textvalidierung und -analyse.
Die Funktion string.find() arbeitet 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: 5Dies findet die erste Ziffer in der Zeichenfolge, die sich an Position 5 befindet. Sie können auch nach dem Gegenteil suchen, indem Sie Zeichenklassen in Großbuchstaben verwenden:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Ausgabe: 1Hier findet %D Übereinstimmungen mit jedem Zeichen, das keine Ziffer ist, sodass der erste Buchstabe an Position 1 gefunden wird.
Eine häufige Validierungsaufgabe besteht darin, zu prüfen, ob eine Zeichenfolge mit einem bestimmten Muster beginnt. Sie können den Anker ^ am Anfang eines Musters verwenden, um nur am Anfang der Zeichenfolge zu suchen:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endDieses Muster prüft, ob die Zeichenfolge mit einem Buchstaben beginnt, was es nützlich für die Eingabevalidierung macht, bei der bestimmte Formate erforderlich sind.
Aufgabe
EinfachSchreiben Sie eine Funktion startsWithLetter, die text entgegennimmt und zurückgibt, ob die Zeichenkette mit einem Buchstaben beginnt.
Verwenden Sie string.find() mit dem Anker ^ und der Zeichenklasse %a, um zu prüfen, ob die Zeichenkette mit einem Buchstaben beginnt.
Parameter:
text(string): Die zu validierende Zeichenkette
Rückgabewert: true, wenn die Zeichenkette mit einem Buchstaben beginnt, andernfalls false (boolean)
Spickzettel
Verwenden Sie string.find() mit Zeichenklassen, um nach Mustern in Zeichenfolgen zu suchen. Es 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: 5Großgeschriebene Zeichenklassen entsprechen dem Gegenteil (nicht übereinstimmende Zeichen):
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Ausgabe: 1Verwenden Sie den Anker ^ am Anfang eines Musters, um nur am Anfang der Zeichenfolge zu suchen:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endProbier es selbst
function startsWithLetter(text)
-- Schreibe hier den Code
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