Menu
CoddyTech

string.find()

Fa parte della sezione Fondamenti del percorso Lua di Coddy. Lezione 48 di 90.

La funzione string.find() è uno strumento potente per cercare all'interno delle stringhe. Ti permette di cercare una stringa più piccola (chiamata pattern) all'interno di una stringa più grande e ti dice esattamente dove è stata trovata.

Ecco la sintassi di base:

string.find(text, pattern)

Quando string.find() individua correttamente il modello, restituisce due numeri: la posizione iniziale e quella finale della corrispondenza. Se il modello non viene trovato, restituisce nil.

Ecco un semplice esempio:

local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos)  -- restituisce: 5 12

In questo esempio, la parola «tesoro» inizia alla posizione 5 e termina alla posizione 12 nella frase.

Una cosa da sapere: il testo che cerchi è un pattern, non testo semplice. Alcuni caratteri hanno significati speciali nei pattern: . % - + * ? [ ] ^ $ ( ). Li imparerai più avanti nel corso. Le lettere, le cifre e gli spazi corrispondono a sé stessi, come nell’esempio precedente, ma un carattere speciale può corrispondere a più di quanto intendessi:

print(string.find("Score: 105", "1.5"))  -- restituisce: 8 10 (il . ha trovato corrispondenza con lo 0)

Per cercare il testo esattamente come è scritto, aggiungi altri due argomenti: 1 (inizia dal primo carattere) e true (una ricerca semplice, senza caratteri speciali):

print(string.find("Score: 105", "1.5", 1, true))   -- restituisce: nil
print(string.find("Version 1.5", "1.5", 1, true))  -- restituisce: 9 11
challenge icon

Sfida

Facile

Crea un rilevatore di messaggi segreti che cerchi una parola in codice nascosta all'interno di un messaggio di testo più lungo. Dichiara una variabile chiamata message e assegnale il valore "The ancient treasure lies beneath the old oak tree". Usa la funzione string.find() per cercare la parola "treasure" nel messaggio e memorizza le posizioni iniziale e finale in variabili chiamate startPos e endPos. Stampa i valori di entrambe le posizioni su righe separate.

Provalo tu

-- Dichiara la variabile message
local message = "The ancient treasure lies beneath the old oak tree"

-- TODO: Scrivi qui il tuo codice per trovare la parola "treasure" e memorizzare le posizioni

-- Stampa le posizioni
print(startPos)
print(endPos)
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Lua online