Introduzione ai pattern delle stringhe
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 36 di 54.
Quando hai usato string.gsub() nella lezione precedente, hai cercato testo esatto, come spazi o parole specifiche. Ma cosa succede se devi trovare «qualsiasi cifra» o «qualsiasi lettera» senza conoscere il carattere esatto? È qui che entrano in gioco i pattern delle stringhe.
I pattern delle stringhe in Lua sono un modo per descrivere il tipo di testo che stai cercando, anziché il testo esatto. Sono più semplici delle espressioni regolari, ma abbastanza potenti per la maggior parte delle operazioni di elaborazione del testo.
Lua fornisce codici speciali chiamati classi di caratteri, che corrispondono a categorie di caratteri. Ecco i più comuni:
%d -- corrisponde a qualsiasi cifra (0-9)
%a -- corrisponde a qualsiasi lettera (a-z, A-Z)
%s -- corrisponde a qualsiasi carattere di spaziatura (spazio, tabulazione, nuova riga)
%w -- corrisponde a qualsiasi carattere alfanumerico (lettere e cifre)
%p -- corrisponde a qualsiasi segno di punteggiaturaEcco come potresti usare questi pattern con string.find() per individuare la prima cifra in una stringa:
local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position) -- Output: 6Puoi anche usare le versioni maiuscole di queste classi per indicare l’opposto. Per esempio, %D corrisponde a qualsiasi carattere che non è una cifra, e %A corrisponde a qualsiasi carattere che non è una lettera.
Sfida
FacileScrivi una funzione containsDigit che accetta text e restituisce se il testo contiene almeno una cifra.
Usa string.find() con la classe di caratteri %d per verificare se nella stringa è presente una cifra.
Parametri:
text(stringa): Il testo in cui cercare cifre
Restituisce: true se il testo contiene almeno una cifra, false altrimenti (booleano)
Provalo tu
function containsDigit(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