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 12In 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 11Sfida
FacileCrea 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)Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori 2: relazionali e logici
Operatori di uguaglianzaOperatori relazionaliL'operatore 'and'L'operatore 'or'L'operatore 'not'Valutazione short-circuitValori truthy e falsyRiepilogo: logica semplice7Logica condizionale di base
L'istruzione if-thenL'istruzione if-then-elseL'istruzione elseifRiepilogo - Il forziere del tesoro2Variabili e tipi di dati
Che cos'è una variabile?NumeriStringheValori booleaniIl valore 'nil'La funzione type()Convenzioni di denominazioneRiepilogo - Profilo del personaggio5Output di base
Stampare valori letteraliStampare variabiliStampare più valoriCombinare stringhe e variabiliLa funzione tostring()InputCastRipasso - Rapporto di statoRipasso - Fino a 1208Basi della manipolazione delle stringhe
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Riepilogo - Formatta il nome utente3Operatori 1: aritmetica e concatenazione
Operatori aritmeticiOperatore moduloOperatore di elevamento a potenzaConcatenazione di stringhePrecedenza degli operatoriRipasso: calcoli semplici6Progetto: visualizzazione delle statistiche del personaggio
Messaggio di benvenutoDichiara le statistiche del personaggio9Funzioni: nozioni di base
Dichiarare una funzioneChiamare una funzioneFunzioni con parametriFunzioni con più parametriL'istruzione 'return'Ripasso - Calcolatore di areaEsercitati da solo: Compilatore Lua online