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 kalıbın ilk oluşumunu bulurken, bir dizedeki tüm eşleşmeleri bulmanız gerekirse ne olur? string.gmatch() işlevi, her eşleşmeyi tek tek işlemek üzere bir for döngüsünde kullanabileceğiniz bir yineleyici döndürerek bu sorunu çözer.

Temel söz dizimi şu şekildedir:

for match in string.gmatch(text, pattern) do
    -- her eşleşmeyi işle
end

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 basamakla eşleşir ve döngü bulunan her number için bir kez çalışır.

Bir cümledeki 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

extractHashtags işlevini yazın; bu işlev text değerini almalı ve metinde bulunan tüm hashtag'leri her biri ayrı bir satırda olacak şekilde döndürmelidir.

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 string.gmatch() işlevini "#%a+" kalıbıyla kullanın
  • Her eşleşme üzerinde yineleyin ve bunları toplayın
  • Tüm hashtag'leri satır sonu karakterleri (\n) ile birleştirin
  • Hiç hashtag bulunamazsa boş bir dize döndürün

Parametreler:

  • text (string): Hashtag'leri aramak için kullanılacak metin

Döndürülen: Bulunan tüm hashtag'ler; her biri ayrı bir satırda. Hiç hashtag yoksa boş bir dize (string) döndürülür

Kendin dene

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

Kendi başına pratik yap: Online Lua derleyicisi