0Pricing
Lua Academy · Lektion

string.format für Ausgaben

Formatieren Sie Zeichenketten mit %s, %d, %f und anderen Formatbezeichnern

string.format für Ausgaben ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Grundlagen von string.format

string.format(fmt, ...) formatiert Werte mithilfe von Formatbezeichnern im C-Stil. Die Funktion gibt einen formatierten String zurück. Der Format-String enthält literalen Text und Konvertierungsbezeichner, die mit % beginnen. Dies ist die wichtigste Methode, um in Lua eine präzise Ausgabe zu erzeugen.

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 und %i für Ganzzahlen

%d und %i formatieren Ganzzahlen. Fügen Sie für die Auffüllung eine Breite hinzu: %5d richtet rechtsbündig auf 5 Zeichen aus. %-5d richtet linksbündig aus. %05d füllt mit Nullen auf. Diese Bezeichner kürzen Gleitkommazahlen ab – verwenden Sie bei Bedarf zuerst 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 und %e für Gleitkommazahlen

%f formatiert in Festkommadarstellung, %e in wissenschaftlicher Schreibweise und %g wählt die kürzere Darstellung. Ein Genauigkeitsbezeichner (z. B. %.2f) legt die Anzahl der Dezimalstellen fest. Die Standardgenauigkeit beträgt 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 Strings

%s fügt einen String ein. Nicht-String-Werte werden mit tostring konvertiert. Breite und Ausrichtung funktionieren wie bei Zahlen. %q setzt einen String in ein für Lua lesbares Format (mit Escape-Sequenzen) und ist nützlich für die Serialisierung.

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 und %o für andere Zahlensysteme

%x formatiert eine Ganzzahl hexadezimal (in Kleinbuchstaben), %X hexadezimal (in Großbuchstaben), %o oktal und %u als vorzeichenlose Ganzzahl. Dies ist nützlich für die Darstellung von Bitmasken, Farbcodes und in der hardwarenahen Programmierung.

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)) -- 0000dead

Mehrere Werte

Übergeben Sie so viele Argumente, wie Formatbezeichner vorhanden sind. Die Anzahl der Argumente muss übereinstimmen – zu wenige Argumente verursachen einen Fehler, zusätzliche werden ignoriert. Verwenden Sie Format-Strings, um strukturierte Ausgaben wie Tabellen, Protokolle oder Berichte zu erstellen.

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  A

Formatvorlagen erstellen

Speichern Sie Format-Strings als Konstanten, um sie wiederzuverwenden. Dadurch bleibt die Ausgabe konsistent und das Format kann an einer einzigen Stelle geändert werden. String-Formatierung bildet die Grundlage für Protokollierung, CSV-Ausgabe und Berichtserstellung.

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")

Auffüllen und Ausrichten

Verwenden Sie Breitenbezeichner für eine ausgerichtete Ausgabe. Eine positive Breite richtet rechtsbündig aus, eine negative linksbündig. Dies ist besonders für Tabellen und Berichte nützlich, in denen die Spalten bündig untereinander stehen sollen. Kombinieren Sie dies mit string.rep, um Trennlinien zu erstellen.

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 und %% als Literale

%c konvertiert eine Ganzzahl in das entsprechende ASCII-Zeichen. %% erzeugt ein wörtliches Prozentzeichen. Dies ist nützlich, um Sonderzeichen zu erzeugen oder % in Format-Strings einzufügen.

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 im Vergleich zu tostring

Verwenden Sie tostring für die einfache Konvertierung beliebiger Typen und string.format für die Kontrolle der Genauigkeit, das Auffüllen und die Formatierung mehrerer Werte. string.format("%s", val) ruft intern tostring für die String-Konvertierung auf.

-- 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))    -- ERROR

Kurze Prüfung

Was erzeugt string.format("%05.2f", 3.1)?

Zusammenfassung: string.format

Zusammenfassung:

  • %s String, %d Ganzzahl, %f Gleitkommazahl, %x Hexadezimalzahl
  • Breite: %10d rechtsbündig, %-10d linksbündig, %010d mit Nullen auffüllen
  • Genauigkeit: %.2f (2 Dezimalstellen), %.3s (3 Zeichen)
  • %q setzt einen String für das Parsen durch Lua in Anführungszeichen
  • %% wörtliches Prozentzeichen

Häufig gestellte Fragen

Ist die Lektion „string.format für Ausgaben“ kostenlos?

Ja — der vollständige Text von „string.format für Ausgaben“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „string.format für Ausgaben“?

Formatieren Sie Zeichenketten mit %s, %d, %f und anderen Formatbezeichnern Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Lua Academy zu starten?

Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „string.format für Ausgaben“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?

Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen von Zeichenketten: Verketten und Länge
  2. Teilzeichenketten finden und extrahieren
  3. string.format für Ausgaben
  4. string.gsub und string.gmatch
← Zurück zu Lua Academy