string.find()
Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 37 / 54.
Karakter sınıflarını anladığınıza göre, tam metin yerine desenleri aramak için bunları string.find() ile kullanabilirsiniz. Bu, metin doğrulama ve analizi için güçlü olanaklar sunar.
string.find() fonksiyonu, desenlerle tıpkı düz metin dizeleriyle 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, dizedeki 5. konumda bulunan ilk rakamı bulur. Büyük harf karakter sınıflarını kullanarak tam tersini de arayabilirsiniz:
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 desenle başlayıp başlamadığını kontrol etmektir. Yalnızca dizenin başında eşleşme sağlamak için bir desenin başına ^ tutturucusunu (anchor) ekleyebilirsiniz:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endBu desen, dizginin bir harfle başlayıp başlamadığını kontrol eder; bu da onu belirli formatların gerekli olduğu girdi doğrulama işlemleri için kullanışlı hale getirir.
Görev
Kolaytext parametresini alan ve dizenin bir harfle başlayıp başlamadığını döndüren bir startsWithLetter fonksiyonu yazın.
Dizenin bir harfle başlayıp başlamadığını kontrol etmek için ^ çapası ve %a karakter sınıfı ile birlikte string.find() kullanın.
Parametreler:
text(string): Doğrulanacak dize
Döndürür: Dize bir harfle başlıyorsa true, aksi takdirde false (boolean)
Kopya kağıdı
Dizelerdeki kalıpları aramak için karakter sınıflarıyla birlikte string.find() kullanın. Kalıbın ilk eşleştiği konumu döndürür:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- Çıktı: 5Büyük harf karakter sınıfları tam tersiyle (eşleşmeyen karakterler) eşleşir:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Çıktı: 1Yalnızca dizenin başında eşleşme sağlamak için bir kalıbın başında ^ tutturucusunu (anchor) kullanın:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endKendin dene
function startsWithLetter(text)
-- Kodunuzu buraya yazın
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow 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 Tablosu