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 12Bu ö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 11Görev
KolayDaha 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)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
4Operatörler 2 İlişkisel ve Mantıksal
Eşitlik Operatörleriİlişkisel Operatörler'and' Operatörü'or' Operatörü'not' OperatörüKısa Devre DeğerlendirmesiTruthy ve Falsy DeğerlerÖzet - Basit Mantık10Tablolar Bölüm 1: Liste Stili
Tablo Nedir?Tablo Oluşturmaİndeks ile Elemanlara Erişmeİndeks ile Elemanları DeğiştirmeUzunluk Operatörü '#'table.insert()table.remove()Özet - Parti Üyelerini Yönetme13Proje: Basit İksir Dükkanı
Proje Kurulumuİksir Ekleme2Değişkenler ve Veri Tipleri
Değişken Nedir?SayılarStringlerBooleanlar'nil' Değeritype() Fonksiyonuİsimlendirme KurallarıÖzet - Karakter Profili5Temel Çıktı
Sabitleri YazdırmaDeğişkenleri YazdırmaBirden Fazla Değer YazdırmaMetinleri ve Değişkenleri Birleştirmetostring() FonksiyonuGirdiTip DönüşümüÖzet - Durum RaporuÖzet - 120'ye Kadar8String Manipülasyonu Temelleri
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Özet - Kullanıcı Adı Biçimlendirme3Operatörler 1 Aritmetik ve Birleştirme
Aritmetik OperatörlerMod Alma OperatörüÜs Alma OperatörüString BirleştirmeOperatör ÖnceliğiÖzet - Basit Hesaplamalar6Proje: Karakter İstatistiklerini Görüntüleme
Hoş Geldiniz MesajıKarakter İstatistiklerini Tanımlama9Fonksiyon Temelleri
Fonksiyon TanımlamaFonksiyon ÇağırmaParametreli FonksiyonlarÇoklu Parametreli Fonksiyonlar'return' İfadesiÖzet - Alan HesaplayıcıKendi başına pratik yap: Online Lua derleyicisi