string.find()
Termasuk bagian Logika dan Alur dalam perjalanan Lua di Coddy. Pelajaran 37 dari 54.
Sekarang setelah memahami kelas karakter, kamu bisa menggunakannya dengan string.find() untuk mencari pola, bukan teks yang persis sama. Ini membuka banyak kemungkinan untuk validasi dan analisis teks.
Fungsi string.find() bekerja dengan pola seperti halnya dengan string literal. Fungsi ini mengembalikan posisi tempat pola pertama kali cocok:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- output: 5Ini menemukan digit pertama dalam string, yang berada di posisi 5. Kamu juga bisa mencari kebalikannya dengan menggunakan kelas karakter huruf besar:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- output: 1Di sini, %D cocok dengan karakter apa pun yang bukan angka, jadi kode ini menemukan huruf pertama pada posisi 1.
Tugas validasi yang umum adalah memeriksa apakah sebuah string dimulai dengan pola tertentu. Kamu dapat menggunakan jangkar ^ di awal pola agar pencocokan hanya dilakukan di awal string:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endPola ini memeriksa apakah string diawali dengan huruf, sehingga berguna untuk validasi input yang memerlukan format tertentu.
Untuk menemukan karakter khusus itu sendiri, seperti titik, escape karakter tersebut dengan % atau nonaktifkan pola dengan pencarian biasa (1 untuk memulai dari karakter pertama, true untuk pencarian biasa):
print(string.find("v1.5", "%.")) -- output: 3 3
print(string.find("v1.5", ".", 1, true)) -- output: 3 3
print(string.find("v1.5", ".")) -- output: 1 1 (. cocok dengan karakter apa pun)Tantangan
MudahTulis fungsi startsWithLetter yang menerima text dan mengembalikan apakah string diawali dengan huruf.
Gunakan string.find() dengan anchor ^ dan kelas karakter %a untuk memeriksa apakah string dimulai dengan huruf.
Parameter:
text(string): String yang akan divalidasi
Nilai yang dikembalikan: true jika string diawali dengan huruf, false jika tidak (boolean)
Coba sendiri
function startsWithLetter(text)
-- Tulis kodemu di sini
end
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Iterasi Tabel Tingkat Lanjut
Iterasi dengan pairs()Iterasi dengan ipairs()pairs() vs. ipairs()Rangkuman: Lembar Karakter4Pengenalan Metatable
Apa Itu Metatable?setmetatable & getmetatableMetamethod __indexMetamethod __newindexMetamethod __tostringMetamethod Aritmetika Bagian 1Metamethod Aritmetika Bagian 2Ulasan: Tabel Hanya-Baca7Manipulasi string Tingkat Lanjut
string.gsub() untuk SubstitusiPengantar Pola stringstring.find()string.match()Iterasi dengan string.gmatch()Rangkuman: Pengurai file log2Fungsi library tabel Lainnya
table.concat()Pembuatan tabel & unpack()table.sort()Pengurutan Kustom dengan FungsiRangkuman, Papan Skor TertinggiLatihan sendiri: Compiler Lua online