Menu
CoddyTech

string.find()

Coddy'nin Lua Journey'sinin Temeller bölümünün bir parçası. Ders 48 / 90.

string.find() işlevi, dizelerde arama yapmak için güçlü bir araçtır. Daha büyük bir dizenin içinde daha küçük bir dizeyi (desen olarak adlandırılır) aramanıza olanak tanır ve bunun tam olarak nerede bulunduğunu söyler.

İşte temel söz dizimi:

string.find(text, pattern)

string.find() kalıbı başarıyla bulduğunda, iki sayı döndürür: eşleşmenin başlangıç konumu ve bitiş konumu. Kalıp bulunamazsa nil döndürür.

İşte basit bir örnek:

local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos)  -- çıktı: 5 12

Bu örnekte, "treasure" sözcüğü cümlede 5. konumda başlar ve 12. konumda biter.

Bilmeniz gereken bir şey: aradığınız metin düz metin değil, bir desendir. Desenlerde birkaç karakterin özel anlamı vardır: . % - + * ? [ ] ^ $ ( ). Bunları kursun ilerleyen bölümlerinde öğreneceksiniz. Harfler, rakamlar ve boşluklar yukarıdaki örnekte olduğu gibi kendileriyle eşleşir; ancak özel bir karakter, amaçladığınızdan daha fazlasıyla eşleşebilir:

print(string.find("Score: 105", "1.5"))  -- çıktı: 8 10 (. karakteri 0 ile eşleşti)

Metni tam olarak yazıldığı gibi aramak için iki argüman daha ekle: 1 (ilk karakterden başla) ve true (özel karakterler içermeyen düz bir arama):

print(string.find("Score: 105", "1.5", 1, true))   -- çıktı: nil
print(string.find("Version 1.5", "1.5", 1, true))  -- çıktı: 9 11
challenge icon

Görev

Kolay

Daha uzun bir metin mesajı içinde gizli bir kod sözcüğünü arayan bir gizli mesaj algılayıcısı oluştur. message adlı bir değişken tanımla ve ona "The ancient treasure lies beneath the old oak tree" değerini ata. Mesajın içinde "treasure" sözcüğünü aramak ve başlangıç ile bitiş konumlarını startPos ve endPos adlı değişkenlerde saklamak için string.find() işlevini kullan. Her iki konum değerini ayrı satırlara yazdır.

Kendin dene

-- message değişkenini tanımla
local message = "The ancient treasure lies beneath the old oak tree"

-- TODO: "treasure" kelimesini bulmak ve konumlarını saklamak için kodunu buraya yaz

-- Konumları yazdır
print(startPos)
print(endPos)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi