Iterare con string.gmatch()
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 39 di 54.
Mentre string.match() trova la prima occorrenza di un modello, cosa succede se devi trovare tutte le corrispondenze in una stringa? La funzione string.gmatch() risolve il problema restituendo un iteratore che puoi usare in un ciclo for per elaborare ogni corrispondenza una alla volta.
La sintassi di base è questa:
for match in string.gmatch(text, pattern) do
-- elabora ogni corrispondenza
endEcco un esempio che trova tutti i numeri in una stringa:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- Output:
-- 3
-- 5Il pattern %d+ corrisponde a una o più cifre e il ciclo viene eseguito una volta per ogni numero trovato.
Puoi anche estrarre tutte le parole da una frase:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Risultato:
-- Lua
-- is
-- a
-- powerful
-- languageSfida
FacileScrivi una funzione extractHashtags che prende text e restituisce tutti gli hashtag trovati nel testo, ciascuno su una riga separata.
Usa string.gmatch() per trovare tutti gli hashtag nel testo. Un hashtag inizia con # seguito da una o più lettere.
Logica:
- Usa
string.gmatch()con il pattern"#%a+"per trovare tutti gli hashtag - Itera su ogni corrispondenza e raccoglila
- Unisci tutti gli hashtag con caratteri di nuova riga (
\n) - Se non viene trovato alcun hashtag, restituisci una stringa vuota
Parametri:
text(stringa): Il testo in cui cercare gli hashtag
Restituisce: Tutti gli hashtag trovati, ciascuno su una riga separata. Se non esistono hashtag, restituisce una stringa vuota (stringa)
Provalo tu
function extractHashtags(text)
-- Scrivi il codice qui
end
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Iterazione avanzata delle tabelle
Iterare con pairs()Iterare con ipairs()pairs() vs. ipairs()Riepilogo - Scheda del personaggio4Introduzione alle metatabelle
Che cos’è una metatabella?setmetatable e getmetatableIl metametodo __indexIl metametodo __newindexIl metametodo __tostringMetametodi aritmetici - Parte 1Metametodi aritmetici - Parte 2Riepilogo - Tabella di sola lettura7Manipolazione avanzata delle stringhe
string.gsub() per la sostituzioneIntroduzione ai pattern delle stringhestring.find()string.match()Iterare con string.gmatch()Riepilogo - Parser di file di log2Altre funzioni della libreria table
table.concat()Costruzione di tabelle e unpack()table.sort()Ordinamento personalizzato con funzioniRiepilogo - Tabellone dei punteggi più altiEsercitati da solo: Compilatore Lua online