string.format för utdata
Formatera strängar med %s, %d, %f och andra formatspecifikationer.
string.format för utdata är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.
Grunderna i string.format
string.format(fmt, ...) formaterar värden med C-liknande formatspecifikationer. Funktionen returnerar en formaterad sträng. Formatsträngen innehåller bokstavlig text och konverteringsspecifikationer som börjar med %. Detta är det främsta sättet att skapa exakt utdata i Lua.
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 och %i för heltal
%d och %i formaterar heltal. Lägg till en bredd för utfyllnad: %5d högerjusterar till 5 tecken. %-5d vänsterjusterar. %05d fyller ut med nollor. Dessa specifikationer trunkerar flyttal; använd math.floor() först om det behövs.
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 och %e för flyttal
%f formaterar med decimalnotation, %e med vetenskaplig notation och %g väljer den kortare varianten. En precisionsspecifikation, till exempel %.2f, styr antalet decimaler. Standardprecisionen är 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 för strängar
%s infogar en sträng. Värden som inte är strängar konverteras med tostring. Bredd och justering fungerar på samma sätt som för tal. %q omger en sträng med citattecken i ett Lua-läsbart format (med escape-sekvenser), vilket är användbart vid serialisering.
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 och %o för andra baser
%x formaterar ett heltal hexadecimalt (med gemener), %X hexadecimalt med versaler, %o oktalt och %u som ett heltal utan tecken. Dessa är användbara för visning av bitmasker, färgkoder och lågnivåprogrammering.
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)) -- 0000deadFlera värden
Skicka lika många argument som det finns formatspecifikationer. Antalet argument måste stämma – för få argument orsakar ett fel och extra argument ignoreras. Använd formatsträngar för att bygga strukturerad utdata, till exempel tabeller, loggar eller rapporter.
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 ABygga formatmallar
Lagra formatsträngar som konstanter så att de kan återanvändas. Det håller utdatan konsekvent och gör det enkelt att ändra formatet på ett enda ställe. Strängformatering är grunden för loggning, CSV-utdata och rapportgenerering.
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")Utfyllnad och justering
Använd breddspecifikationer för justerad utdata. En positiv bredd högerjusterar och en negativ bredd vänsterjusterar. Detta är särskilt användbart för tabeller och rapporter där kolumnerna ska linjera. Kombinera med string.rep för avgränsningslinjer.
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 och %% som litteraler
%c konverterar ett heltal till motsvarande ASCII-tecken. %% producerar ett bokstavligt procenttecken. Dessa är användbara för att skapa specialtecken eller inkludera % i formatsträngar.
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 jämfört med tostring
Använd tostring för enkel konvertering av valfri typ och string.format för kontroll av precision, utfyllnad och formatering av flera värden. string.format("%s", val) anropar internt tostring vid strängkonvertering.
-- 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)) -- ERRORSnabb kontroll
Vad producerar string.format("%05.2f", 3.1)?
Sammanfattning: string.format
Sammanfattning:
%ssträng,%dheltal,%fflyttal,%xhexadecimalt- Bredd:
%10dhögerjusterar,%-10dvänsterjusterar,%010dfyller ut med nollor - Precision:
%.2f(2 decimaler),%.3s(3 tecken) %qomger en sträng med citattecken för Lua-tolkning%%bokstavligt procenttecken
Lär dig Lua med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”string.format för utdata” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”string.format för utdata”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”string.format för utdata”?
Formatera strängar med %s, %d, %f och andra formatspecifikationer. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lua Academy?
Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”string.format för utdata”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lua Academy-lektionen?
Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Grunderna i strängar: konkatenering och längd
- Hitta och extrahera delsträngar
- string.format för utdata
- string.gsub och string.gmatch