string.match()
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 38 di 54.
Mentre string.find() ti dice dove compare un pattern in una stringa, a volte devi estrarre il testo effettivo che corrisponde. È qui che entra in gioco string.match(), che diventa ancora più potente quando viene combinato con i gruppi di cattura.
I gruppi di cattura ti permettono di contrassegnare parti specifiche di un pattern che vuoi estrarre. Crei un gruppo di cattura racchiudendo una parte del pattern tra parentesi (). Quando string.match() trova una corrispondenza, restituisce il testo catturato invece della sola posizione.
Ecco un semplice esempio di estrazione di un numero da una stringa:
local text = "Player score: 100"
local number = string.match(text, "%d+")
print(number) -- Output: 100Lo schema %d+ significa "una o più cifre". Il + è un modificatore che corrisponde a uno o più elementi della classe di caratteri precedente, consentendoti di acquisire numeri composti da più cifre.
Puoi usare i gruppi di cattura per estrarre parti specifiche di un pattern più complesso:
local message = "User: Alice sent a message"
local username = string.match(message, "User: (%a+)")
print(username) -- Output: AliceQui, le parentesi intorno a %a+ dicono a Lua di catturare la sequenza di lettere che segue "User: ". Il resto del pattern aiuta a individuare la posizione corretta, ma viene restituita solo la parte catturata.
Se il tuo pattern ha più acquisizioni, string.match() le restituisce tutte come valori separati, che puoi assegnare a più variabili contemporaneamente.
Sfida
FacileScrivi una funzione extractPrice che accetta text e restituisce il valore del prezzo trovato nella stringa.
Usa string.match() con un pattern di cattura per estrarre il prezzo numerico che compare dopo il simbolo del dollaro. Il pattern dovrebbe catturare una o più cifre usando %d+.
Parametri:
text(stringa): una stringa contenente un prezzo nel formato "Price: $XX"
Restituisce: il prezzo numerico come stringa (stringa)
Provalo tu
function extractPrice(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