Menu
CoddyTech

string.find()

Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 37 di 54.

Ora che hai compreso le classi di caratteri, puoi usarle con string.find() per cercare schemi invece di testo esatto. Questo apre possibilità interessanti per la convalida e l'analisi del testo.

La funzione string.find() funziona con i pattern come con le stringhe letterali. Restituisce la posizione in cui il pattern trova la prima corrispondenza:

local text = "User123"
local position = string.find(text, "%d")
print(position)  -- Risultato: 5

Questo trova la prima cifra nella stringa, che si trova alla posizione 5. Puoi anche cercare il suo opposto usando le classi di caratteri maiuscole:

local code = "ABC123"
local position = string.find(code, "%D")
print(position)  -- Output: 1

Qui, %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 un pattern specifico. Puoi usare l'ancora ^ all'inizio di un pattern 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")
end

Questo schema verifica se la stringa inizia con una lettera, rendendolo utile per la convalida dell'input quando sono richiesti determinati formati.

Per trovare un carattere speciale in sé, come un punto, puoi escaparlo con % oppure disattivare i pattern con una ricerca semplice (1 per iniziare dal primo carattere, true per una ricerca semplice):

print(string.find("v1.5", "%."))         -- Output: 3 3
print(string.find("v1.5", ".", 1, true))  -- Output: 3 3
print(string.find("v1.5", "."))          -- Output: 1 1 (. corrisponde a qualsiasi carattere)
challenge icon

Sfida

Facile

Scrivi una funzione startsWithLetter che prende 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
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 Logica e flusso

Esercitati da solo: Compilatore Lua online