0Pricing
Lua Academy · Lezione

string.gsub per le trasformazioni

Sostituisca i pattern con stringhe, funzioni o ricerche in tabelle tramite gsub.

string.gsub per le trasformazioni è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.

Che cos'è string.gsub?

string.gsub(s, pattern, repl, n) sostituisce le occorrenze di pattern in s con repl. Restituisce la nuova stringa e il numero di sostituzioni.

Sostituzione semplice di stringhe

Sostituite tutte le occorrenze di una sotto-stringa letterale.

local s = "hello world world"
local result, count = s:gsub("world", "Lua")
print(result, count)  -- hello Lua Lua  2

Limitazione delle sostituzioni

Passate un quarto argomento per limitare il numero di sostituzioni.

local s = "aaa bbb aaa"
print(s:gsub("aaa", "xxx", 1))  -- xxx bbb aaa  1

Sostituzione basata su pattern

Sostituite tutte le cifre con una stringa fissa.

local s = "abc 123 def 456"
print(s:gsub("%d+", "NUM"))  -- abc NUM def NUM  2

Sostituzione tramite funzione

Quando repl è una funzione, viene chiamata con ogni cattura (o con l'intera corrispondenza) e il valore restituito sostituisce la corrispondenza.

local s = "price: 100, tax: 15"
local result = s:gsub("%d+", function(n)
  return tostring(tonumber(n) * 1.1)
end)
print(result)  -- price: 110.0, tax: 16.5

Sostituzione tramite tabella

Quando repl è una tabella, ogni corrispondenza (o cattura) viene usata come chiave; il valore della tabella sostituisce la corrispondenza.

local vars = {name="Alice", lang="Lua"}
local tmpl = "Hello, {name}! Welcome to {lang}."
local result = tmpl:gsub("{(%w+)}", vars)
print(result)  -- Hello, Alice! Welcome to Lua.

Rimozione degli spazi bianchi

Usate gsub per rimuovere gli spazi bianchi iniziali e finali da una stringa.

local function trim(s)
  return s:gsub("^%s+", ""):gsub("%s+$", "")
end
print("[" .. trim("  hello  ") .. "]")  -- [hello]

Conversione delle maiuscole e minuscole

Usate gsub con una funzione per convertire ogni lettera in maiuscolo o in minuscolo.

local function toUpper(s)
  return s:gsub("%a", string.upper)
end
print(toUpper("hello world"))  -- HELLO WORLD

Escape dei caratteri speciali

Fate l'escape di tutti i caratteri speciali dei pattern presenti in una stringa, così da poterla usare come pattern letterale.

local function escapePat(s)
  return s:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
end

Uso del conteggio restituito

Il secondo valore restituito (il conteggio delle sostituzioni) è utile per rilevare se è stata effettuata qualche sostituzione.

local s = "no numbers here"
local result, n = s:gsub("%d+", "X")
if n == 0 then print("nothing replaced") end

Pattern per un motore di template

Un semplice motore di template sostituisce i segnaposto {{key}} con i valori di una tabella di dati.

local function render(tmpl, data)
  return (tmpl:gsub("{{(%w+)}}", data))
end
print(render("Hi {{name}}!", {name="Bob"}))  -- Hi Bob!

Domanda su gsub

Quando repl in gsub è una funzione, che cosa le viene passato?

Riepilogo: string.gsub

string.gsub è uno strumento estremamente versatile per la trasformazione delle stringhe: consente di sostituire con stringhe, funzioni (per calcoli dinamici) o tabelle (per cercare valori in un dizionario). Restituisce anche il conteggio delle sostituzioni.

Domande Frequenti

La lezione «string.gsub per le trasformazioni» è gratuita?

Sì — il testo completo di «string.gsub per le trasformazioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.

Cosa imparerò in «string.gsub per le trasformazioni»?

Sostituisca i pattern con stringhe, funzioni o ricerche in tabelle tramite gsub. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Lua Academy?

Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «string.gsub per le trasformazioni»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Lua Academy?

Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Sintassi dei pattern Lua
  2. Catture e string.match
  3. string.gmatch per la tokenizzazione
  4. string.gsub per le trasformazioni
← Torna a Lua Academy