string.format voor uitvoer
Formatteer strings met %s, %d, %f en andere formaatspecificaties
string.format voor uitvoer is een gratis Lua Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.
De basis van string.format
string.format(fmt, ...) formatteert waarden met op C gebaseerde formaatspecificaties. De functie retourneert een geformatteerde tekenreeks. De formattekenreeks bevat letterlijke tekst en conversiespecificaties die met % beginnen. Dit is de belangrijkste manier om in Lua nauwkeurige uitvoer te produceren.
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 en %i voor gehele getallen
%d en %i formatteren gehele getallen. Voeg een breedte toe voor opvulling: %5d vult rechts aan tot 5 tekens. %-5d lijnt links uit. %05d vult op met nullen. Deze specificaties kappen kommagetallen af — gebruik zo nodig eerst 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 en %e voor kommagetallen
%f formatteert in notatie met een vaste komma; %e in wetenschappelijke notatie; %g kiest de kortste van beide. Een precisiespecificatie (bijvoorbeeld %.2f) bepaalt het aantal decimalen. De standaardprecisie is 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 voor tekenreeksen
%s voegt een tekenreeks in. Waarden die geen tekenreeks zijn, worden met tostring geconverteerd. Breedte en uitlijning werken hetzelfde als bij getallen. %q zet een tekenreeks tussen aanhalingstekens in een door Lua leesbaar formaat (met escape-reeksen), wat handig is voor serialisatie.
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 en %o voor andere talstelsels
%x formatteert een geheel getal in hexadecimale notatie (kleine letters); %X in hexadecimale notatie met hoofdletters; %o in octale notatie; %u als geheel getal zonder teken. Deze specificaties zijn handig voor de weergave van bitmaskers, kleurcodes en low-levelprogrammering.
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)) -- 0000deadMeerdere waarden
Geef evenveel argumenten door als er formaatspecificaties zijn. Het aantal argumenten moet overeenkomen — te weinig argumenten veroorzaken een fout; extra argumenten worden genegeerd. Gebruik formattekenreeksen om gestructureerde uitvoer op te bouwen, zoals tabellen, logboeken of rapporten.
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 AFormatteerpatronen opbouwen
Sla formattekenreeksen op als constanten zodat je ze opnieuw kunt gebruiken. Zo blijft de uitvoer consistent en kun je de indeling eenvoudig op één plek wijzigen. Tekenreeksformattering vormt de basis van logboeken, CSV-uitvoer en het genereren van rapporten.
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")Opvulling en uitlijning
Gebruik breedtespecificaties voor uitgelijnde uitvoer. Een positieve breedte lijnt rechts uit; een negatieve breedte lijnt links uit. Dit is vooral handig voor tabellen en rapporten waarin kolommen netjes onder elkaar moeten staan. Combineer dit met string.rep voor scheidingslijnen.
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 en %% als letterlijke tekens
%c converteert een geheel getal naar het bijbehorende ASCII-teken. %% produceert een letterlijk procentteken. Deze specificaties zijn handig om speciale tekens te genereren of een % op te nemen in formattekenreeksen.
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 tegenover tostring
Gebruik tostring voor eenvoudige conversie van elk type; gebruik string.format voor controle over precisie, opvulling en formattering van meerdere waarden. string.format("%s", val) roept intern tostring aan voor conversies naar tekenreeksen.
-- 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)) -- ERRORKorte controle
Wat produceert string.format("%05.2f", 3.1)?
Samenvatting: string.format
Samenvatting:
%stekenreeks,%dgeheel getal,%fkommagetal,%xhexadecimaal- Breedte:
%10drechts uitlijnen,%-10dlinks uitlijnen,%010dopvullen met nullen - Precisie:
%.2f(2 decimalen),%.3s(3 tekens) %qzet een tekenreeks tussen aanhalingstekens voor het parsen door Lua%%letterlijk procentteken
Leer Lua met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 40
- Lessen
- 159
Veelgestelde vragen
Is de les “string.format voor uitvoer” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “string.format voor uitvoer”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.
Wat leer ik in “string.format voor uitvoer”?
Formatteer strings met %s, %d, %f en andere formaatspecificaties Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Lua Academy te beginnen?
Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “string.format voor uitvoer”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Lua Academy?
Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Basisprincipes van strings: concat en lengte
- Substrings zoeken en extraheren
- string.format voor uitvoer
- string.gsub en string.gmatch