string.gmatch() ile Yineleme
Coddy'nin Lua Journey'sinin Logic & Flow 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 (iterator) döndürerek bu sorunu çö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 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 eşleşme üzerinde gezinin ve onları 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)
Kopya kağıdı
string.gmatch() fonksiyonu, bir dizedeki bir desenin tüm oluşumlarını bulan bir yineleyici (iterator) döndürür ve her bir eşleşmeyi bir for döngüsü içinde işlemenize olanak tanır.
Temel sözdizimi:
for match in string.gmatch(text, pattern) do
-- her bir eşleşmeyi işle
endTüm sayıları bulma örneği:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- Çıktı:
-- 3
-- 5Tüm kelimeleri çıkarma örneği:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Çıktı:
-- Lua
-- is
-- a
-- powerful
-- languageKendin dene
function extractHashtags(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.
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