string.find()
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 37 di 54.
Ora che hai capito le classi di caratteri, puoi usarle con string.find() per cercare dei modelli invece del testo esatto. Questo apre possibilità interessanti per la convalida e l’analisi del testo.
La funzione string.find() funziona allo stesso modo con i pattern e con le stringhe letterali. Restituisce la posizione in cui il pattern corrisponde per la prima volta:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- Risultato: 5Questo trova la prima cifra nella stringa, che si trova in posizione 5. Puoi anche cercare l'opposto usando le classi di caratteri maiuscole:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Risultato: 1Qui, %D corrisponde a qualsiasi carattere non numerico, quindi trova la prima lettera in posizione 1.
Un'attività di convalida comune consiste nel verificare se una stringa inizia con uno schema specifico. Puoi usare l'ancora ^ all'inizio di uno schema per trovare corrispondenze solo all'inizio della stringa:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endQuesto schema verifica se la stringa inizia con una lettera, rendendolo utile per la convalida dell'input quando sono richiesti determinati formati.
Sfida
FacileScrivi una funzione startsWithLetter che accetta text e restituisce se la stringa inizia con una lettera.
Usa string.find() con l’ancora ^ e la classe di caratteri %a per verificare se la stringa inizia con una lettera.
Parametri:
text(stringa): La stringa da convalidare
Restituisce: true se la stringa inizia con una lettera, false altrimenti (booleano)
Provalo tu
function startsWithLetter(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