string.gmatch() ile Yineleme
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 39 / 54.
string.match() bir desenin ilk eşleşmesini bulurken, bir dizedeki tüm eşleşmeleri bulmanız gerekirse ne olur? string.gmatch() işlevi, her bir eşleşmeyi tek tek işlemek için bir for döngüsünde kullanabileceğiniz bir yineleyici döndürerek bunu çözer.
Temel sözdizimi şu şekildedir:
for match in string.gmatch(text, pattern) do
-- her eşleşmeyi işle
endİşte bir dizedeki tüm sayıları bulan bir örnek:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- Çıktı:
-- 3
-- 5%d+ deseni bir veya daha fazla rakamla eşleşir ve döngü bulunan her bir sayı için bir kez çalışır.
Bir cümleden tüm kelimeleri de çıkarabilirsiniz:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Çıktı:
-- Lua
-- is
-- a
-- powerful
-- languageGörev
Kolaytext parametresini alan ve metinde bulunan tüm hashtag'leri her biri ayrı bir satırda olacak şekilde döndüren bir extractHashtags fonksiyonu yazın.
Metindeki tüm hashtag'leri bulmak için string.gmatch() kullanın. Bir hashtag # ile başlar ve ardından bir veya daha fazla harf gelir.
Mantık:
- Tüm hashtag'leri bulmak için
"#%a+"deseniylestring.gmatch()kullanın - Her bir eşleşme üzerinde döngü kurun ve bunları toplayın
- Tüm hashtag'leri yeni satır karakterleri (
\n) ile birleştirin - Hiç hashtag bulunamazsa, boş bir dize döndürün
Parametreler:
text(string): Hashtag'lerin aranacağı metin
Döndürür: Bulunan tüm hashtag'ler, her biri ayrı bir satırda. Hiç hashtag yoksa, boş bir dize döndürün (string)
Kendin dene
function extractHashtags(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.
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 Tablosu