string.find()
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 37 z 54.
Teraz, gdy rozumiesz klasy znaków, możesz używać ich z string.find(), aby wyszukiwać wzorce zamiast dokładnego tekstu. Otwiera to szerokie możliwości walidacji i analizy tekstu.
Funkcja string.find() działa z wzorcami tak samo jak z dosłownymi ciągami znaków. Zwraca pozycję, w której wzorzec pasuje po raz pierwszy:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- Wynik: 5To znajduje pierwszą cyfrę w ciągu znaków, która znajduje się na pozycji 5. Możesz też wyszukać jej przeciwieństwo, używając klas znaków zapisanych wielkimi literami:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Wynik: 1Tutaj %D dopasowuje dowolny znak niebędący cyfrą, więc znajduje pierwszą literę na pozycji 1.
Częstym zadaniem związanym z walidacją jest sprawdzanie, czy ciąg znaków zaczyna się od określonego wzorca. Możesz użyć kotwicy ^ na początku wzorca, aby dopasowywać go tylko na początku ciągu znaków:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endTen wzorzec sprawdza, czy ciąg znaków zaczyna się od litery, dzięki czemu przydaje się do walidacji danych wejściowych, gdy wymagane są określone formaty.
Wyzwanie
ŁatwyNapisz funkcję startsWithLetter, która przyjmuje text i zwraca informację, czy ciąg znaków zaczyna się od litery.
Użyj string.find() z kotwicą ^ i klasą znaków %a, aby sprawdzić, czy ciąg znaków zaczyna się od litery.
Parametry:
text(string): Ciąg znaków do sprawdzenia
Zwraca: true, jeśli ciąg znaków zaczyna się od litery, w przeciwnym razie false (wartość logiczna)
Spróbuj swoich sił
function startsWithLetter(text)
-- Wpisz kod tutaj
end
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane iterowanie po tabelach
Iterowanie za pomocą pairs()Iterowanie za pomocą ipairs()pairs() a ipairs()Powtórka — karta postaci4Wprowadzenie do metatabel
Czym jest metatabela?setmetatable i getmetatableMetametoda __indexMetametoda __newindexMetametoda __tostringMetamეტody arytmetyczne — część 1Metamეტody arytmetyczne — część 2Podsumowanie — tabela tylko do odczytu7Zaawansowana obróbka ciągów znaków
string.gsub() do podstawianiaWprowadzenie do wzorców ciągów znakówstring.find()string.match()Iterowanie za pomocą string.gmatch()Podsumowanie – parser plików dziennika2Więcej funkcji biblioteki table
table.concat()Tworzenie tabel i unpack()table.sort()Sortowanie niestandardowe za pomocą funkcjiPodsumowanie — tablica najlepszych wyników5Projekt: silnik tekstowej gry przygodowej
Konfiguracja projektu: pokójŁączenie pokoiPoćwicz samodzielnie: Kompilator Lua online