string.format per l'output
Formatta le stringhe con %s, %d, %f e altri specificatori di formato.
string.format per l'output è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 3 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.
Nozioni di base su string.format
string.format(fmt, ...) formatta i valori utilizzando gli specificatori di formato in stile C. Restituisce una stringa formattata. La stringa di formato contiene testo letterale e specificatori di conversione che iniziano con %. In Lua, questo è il modo principale per produrre un output preciso.
print(string.format("Hello, %s!", "Lua")) -- Hello, Lua!
print(string.format("Pi is %.4f", math.pi)) -- Pi is 3.1416
print(string.format("%d items at $%.2f each", 5, 2.99))%d e %i per gli interi
%d e %i formattano gli interi. Aggiunga una larghezza per il riempimento: %5d allinea a destra in 5 caratteri. %-5d allinea a sinistra. %05d completa con zeri. Questi specificatori troncano i numeri a virgola mobile: se necessario, utilizzi prima math.floor().
print(string.format("%d", 42)) -- 42
print(string.format("%5d", 42)) -- 42 (right-aligned)
print(string.format("%-5d|", 42)) -- 42 | (left-aligned)
print(string.format("%05d", 42)) -- 00042
print(string.format("%+d", 42)) -- +42%f e %e per i numeri a virgola mobile
%f formatta con la notazione a virgola fissa; %e con la notazione scientifica; %g sceglie il formato più breve. Uno specificatore di precisione, ad esempio %.2f, controlla il numero di cifre decimali. La precisione predefinita è 6.
print(string.format("%.2f", 3.14159)) -- 3.14
print(string.format("%10.3f", 3.14)) -- 3.140
print(string.format("%e", 12345.678)) -- 1.234568e+04
print(string.format("%.2e", 0.001)) -- 1.00e-03
print(string.format("%g", 100.0)) -- 100%s per le stringhe
%s inserisce una stringa. I valori non stringa vengono convertiti con tostring. La larghezza e l'allineamento funzionano come per i numeri. %q racchiude una stringa in un formato leggibile da Lua, con i caratteri di escape, ed è utile per la serializzazione.
print(string.format("%-10s|", "hi")) -- hi |
print(string.format("%10s|", "hi")) -- hi|
print(string.format("%.3s", "hello")) -- hel (truncate)
print(string.format("%q", 'say "hi"'))-- "say \"hi\""
print(string.format("%s=%s", "key","val")) -- key=val%x e %o per altre basi
%x formatta un intero in esadecimale minuscolo; %X in esadecimale maiuscolo; %o in ottale; %u come intero senza segno. Sono utili per visualizzare maschere di bit e codici colore e per la programmazione a basso livello.
print(string.format("%x", 255)) -- ff
print(string.format("%X", 255)) -- FF
print(string.format("%#x", 255)) -- 0xff (with prefix)
print(string.format("%o", 8)) -- 10 (octal)
print(string.format("%08x", 0xDEAD)) -- 0000deadPiù valori
Passi tanti argomenti quanti sono gli specificatori di formato. Il numero di argomenti deve corrispondere: se sono troppo pochi si verifica un errore, mentre quelli aggiuntivi vengono ignorati. Utilizzi le stringhe di formato per creare output strutturati, ad esempio tabelle, log o report.
local function printRow(name, score, grade)
print(string.format("%-12s %3d %s", name, score, grade))
end
printRow("Alice", 95, "A")
printRow("Bob", 87, "B")
printRow("Carol", 91, "A")
-- Alice 95 A
-- Bob 87 B
-- Carol 91 ACreare modelli di formato
Salvi le stringhe di formato come costanti per poterle riutilizzare. In questo modo l'output rimane coerente ed è facile modificare il formato in un unico punto. La formattazione delle stringhe è alla base della registrazione dei log, dell'output CSV e della generazione di report.
local LOG_FMT = "[%s] %s: %s"
local function log(level, module, msg)
print(string.format(LOG_FMT, level, module, msg))
end
log("INFO", "server", "started on port 8080")
log("WARN", "db", "connection pool low")
log("ERROR", "auth", "token expired")Riempimento e allineamento
Utilizzi gli specificatori di larghezza per ottenere un output allineato. Una larghezza positiva allinea a destra, mentre una negativa allinea a sinistra. È particolarmente utile per tabelle e report in cui le colonne devono essere allineate. Combini questa tecnica con string.rep per creare righe divisorie.
local fmt = "%-15s %6s %8s"
print(string.format(fmt, "Name", "Score", "Grade"))
print(string.rep("-", 31))
local data = {{"Alice",95,"A"},{"Bob",87,"B"},{"Dave",78,"C"}}
for _, r in ipairs(data) do
print(string.format(fmt, r[1], r[2], r[3]))
end%c e %% letterali
%c converte un intero nel carattere ASCII corrispondente. %% produce un segno di percentuale letterale. Sono utili per generare caratteri speciali o includere il simbolo % nelle stringhe di formato.
print(string.format("%c%c%c", 76, 117, 97)) -- Lua
print(string.format("100%%")) -- 100%
print(string.format("%.1f%%", 87.5)) -- 87.5%
-- Build a progress bar
local pct = 65
local filled = math.floor(pct / 5)
local bar = "[" .. string.rep("#",filled) .. string.rep(".",20-filled) .. "]"
print(bar .. " " .. pct .. "%")string.format e tostring
Utilizzi tostring per una semplice conversione di qualsiasi tipo; utilizzi string.format per controllare la precisione, aggiungere riempimento e formattare più valori. string.format("%s", val) richiama internamente tostring per le conversioni in stringa.
-- tostring: simple, any type
print(tostring(3.14)) -- 3.14
print(tostring(true)) -- true
print(tostring(nil)) -- nil
-- string.format: precision + structure
print(string.format("%.2f", 3.14159)) -- 3.14
print(string.format("%d", 255)) -- 255
-- print(string.format("%d", true)) -- ERRORVerifica rapida
Che cosa produce string.format("%05.2f", 3.1)?
Riepilogo: string.format
Riepilogo:
%sstringa,%dintero,%fnumero a virgola mobile,%xesadecimale- Larghezza:
%10dallinea a destra,%-10dallinea a sinistra,%010dcompleta con zeri - Precisione:
%.2f(2 cifre decimali),%.3s(3 caratteri) %qracchiude una stringa tra virgolette per l'analisi in Lua%%segno di percentuale letterale
Domande Frequenti
La lezione «string.format per l'output» è gratuita?
Sì — il testo completo di «string.format per l'output» è 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.format per l'output»?
Formatta le stringhe con %s, %d, %f e altri specificatori di formato. 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 3 di 4.
Quanto tempo richiede la lezione «string.format per l'output»?
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
- Nozioni di base sulle stringhe: concatenazione e lunghezza
- Ricerca ed estrazione di sottostringhe
- string.format per l'output
- string.gsub e string.gmatch