Menu
Coddy logo textTech

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
-- language
challenge icon

Görev

Kolay

text 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+" deseniyle string.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
quiz iconKendini test et

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