String Desenlerine Giriş
Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 36 / 54.
Önceki derste string.gsub() kullandığınızda, boşluklar veya belirli kelimeler gibi tam metinleri aradınız. Ancak tam karakteri bilmeden "herhangi bir rakam" veya "herhangi bir harf" bulmanız gerekirse ne olur? İşte dize desenleri (string patterns) burada devreye girer.
Lua'daki dize kalıpları (string patterns), tam metnin kendisinden ziyade ne tür bir metin aradığınızı tanımlamanın bir yoludur. Düzenli ifadelerden (regular expressions) daha basittirler ancak çoğu metin işleme görevi için yeterince güçlüdürler.
Lua, karakter kategorileriyle eşleşen karakter sınıfları adı verilen özel kodlar sağlar. İşte en yaygın olanları:
%d -- herhangi bir rakamla eşleşir (0-9)
%a -- herhangi bir harfle eşleşir (a-z, A-Z)
%s -- herhangi bir boşluk karakteriyle eşleşir (boşluk, tab, yeni satır)
%w -- herhangi bir alfanümerik karakterle eşleşir (harfler ve rakamlar)
%p -- herhangi bir noktalama işaretiyle eşleşirBir dizedeki ilk rakamı bulmak için bu desenleri string.find() ile şu şekilde kullanabilirsiniz:
local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position) -- Çıktı: 6Bu sınıfların büyük harf versiyonlarını da zıttıyla eşleşmek için kullanabilirsiniz. Örneğin, %D rakam olmayan herhangi bir karakterle eşleşir ve %A harf olmayan herhangi bir karakterle eşleşir.
Görev
Kolaytext parametresini alan ve metnin en az bir rakam içerip içermediğini döndüren bir containsDigit fonksiyonu yazın.
Dizede herhangi bir rakam olup olmadığını kontrol etmek için %d karakter sınıfıyla birlikte string.find() kullanın.
Parametreler:
text(string): Rakam olup olmadığı kontrol edilecek metin
Döndürdüğü Değer: Metin en az bir rakam içeriyorsa true, aksi takdirde false (boolean)
Kopya kağıdı
Lua'daki dize desenleri (string patterns), tam metnin kendisinden ziyade ne tür bir metin aradığınızı tanımlar.
Lua, karakter kategorileriyle eşleşen karakter sınıfları adı verilen özel kodlar sağlar:
%d -- herhangi bir rakamla eşleşir (0-9)
%a -- herhangi bir harfle eşleşir (a-z, A-Z)
%s -- herhangi bir boşluk karakteriyle eşleşir (boşluk, tab, yeni satır)
%w -- herhangi bir alfanümerik karakterle eşleşir (harfler ve rakamlar)
%p -- herhangi bir noktalama işaretiyle eşleşirZıt anlamlısıyla eşleşmek için büyük harf versiyonlarını kullanabilirsiniz. Örneğin, %D rakam olmayan herhangi bir karakterle eşleşir ve %A harf olmayan herhangi bir karakterle eşleşir.
Karakter sınıflarının string.find() ile kullanımı:
local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position) -- Output: 6Kendin dene
function containsDigit(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