string.find()
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 37 / 54.
Artık karakter sınıflarını anladığına göre, tam metin yerine desenleri aramak için bunları string.find() ile kullanabilirsin. Bu, metin doğrulama ve analizi için güçlü olanaklar sunar.
string.find() işlevi, desenlerle de düz dizelerle olduğu gibi çalışır. Desenin ilk eşleştiği konumu döndürür:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- Çıktı: 5Bu, dizgedeki ilk rakamı bulur; bu rakam 5. konumdadır. Büyük harf karakter sınıflarını kullanarak tersini de arayabilirsin:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Çıktı: 1Burada, %D rakam olmayan herhangi bir karakterle eşleşir, bu nedenle 1. konumdaki ilk harfi bulur.
Yaygın bir doğrulama görevi, bir dizenin belirli bir kalıpla başlayıp başlamadığını kontrol etmektir. Yalnızca dizenin başlangıcında eşleşme yapmak için kalıbın başında ^ çapası kullanabilirsin:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endBu kalıp, dizenin bir harfle başlayıp başlamadığını kontrol eder ve belirli biçimlerin gerekli olduğu durumlarda giriş doğrulaması için kullanışlıdır.
Nokta gibi özel bir karakterin kendisini bulmak için karakteri % ile kaçışlayabilir veya düz aramayla desenleri kapatabilirsin (1 ilk karakterden başlamak için, true düz arama için):
print(string.find("v1.5", "%.")) -- Çıktı: 3 3
print(string.find("v1.5", ".", 1, true)) -- Çıktı: 3 3
print(string.find("v1.5", ".")) -- Çıktı: 1 1 (. herhangi bir karakterle eşleşir)Görev
KolayBir startsWithLetter işlevi yazın; bu işlev text alır ve dizenin bir harfle başlayıp başlamadığını döndürür.
Dizenin bir harfle başlayıp başlamadığını kontrol etmek için ^ sabitleyicisini ve %a karakter sınıfını string.find() ile kullanın.
Parametreler:
text(dize): Doğrulanacak dize
Döndürür: Dize bir harfle başlıyorsa true, aksi hâlde false (boolean)
Kendin dene
function startsWithLetter(text)
-- Kodu buraya yazın
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Düzey Tablo Yineleme
pairs() ile Yinelemeipairs() ile Yinelemepairs() vs. ipairs()Özet - Karakter Sayfası4Metatable'lara Giriş
Metatable Nedir?setmetatable & getmetatable__index Metametodu__newindex Metametodu__tostring MetametoduAritmetik Metametotlar Bölüm 1Aritmetik Metametotlar Bölüm 2Özet - Salt Okunur Tablo7İleri Düzey String Manipülasyonu
Yer Değiştirme için string.gsub()String Desenlerine Girişstring.find()string.match()string.gmatch() ile YinelemeÖzet - Log Dosyası Ayrıştırıcı2Daha Fazla Tablo Kütüphanesi Fonksiyonu
table.concat()Tablo Oluşturma ve unpack()table.sort()Fonksiyonlar ile Özel SıralamaÖzet - Yüksek Skor TablosuKendi başına pratik yap: Online Lua derleyicisi