Menu
Coddy logo textTech

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
-- 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 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
end

Tü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
-- 5

Tü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
-- language

Kendin dene

function extractHashtags(text)
    -- Kodu 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.

Logic & Flow bölümündeki tüm dersler