0Pricing
Lua Academy · Leçon

string.format pour la sortie

Formatez des chaînes avec %s, %d, %f et d’autres spécificateurs de format.

string.format pour la sortie est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.

Notions de base sur string.format

string.format(fmt, ...) met en forme les valeurs à l'aide de spécificateurs de format de style C. Elle renvoie une chaîne mise en forme. La chaîne de format contient du texte littéral et des spécificateurs de conversion commençant par %. C'est la principale façon de produire une sortie précise en 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 et %i pour les entiers

%d et %i mettent en forme des entiers. Ajoutez une largeur pour le remplissage : %5d aligne à droite sur 5 caractères. %-5d aligne à gauche. %05d ajoute des zéros. Ces spécificateurs tronquent les nombres à virgule flottante ; utilisez d'abord math.floor() si nécessaire.

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 et %e pour les nombres à virgule flottante

%f utilise la notation à virgule fixe ; %e, la notation scientifique ; %g choisit la représentation la plus courte. Un spécificateur de précision (par exemple %.2f) contrôle le nombre de décimales. La précision par défaut est de 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 pour les chaînes

%s insère une chaîne. Les valeurs qui ne sont pas des chaînes sont converties avec tostring. La largeur et l'alignement fonctionnent comme pour les nombres. %q entoure une chaîne de guillemets dans un format lisible par Lua, avec les caractères d'échappement appropriés ; c'est utile pour la sérialisation.

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 et %o pour d'autres bases

%x met en forme un entier en hexadécimal (minuscules) ; %X en hexadécimal majuscule ; %o en octal ; %u en entier non signé. Ces formats sont utiles pour afficher des masques de bits, des codes couleur et pour la programmation bas niveau.

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

Valeurs multiples

Passez autant d'arguments qu'il y a de spécificateurs de format. Le nombre d'arguments doit correspondre : s'il y en a trop peu, une erreur se produit ; les arguments supplémentaires sont ignorés. Utilisez les chaînes de format pour construire des sorties structurées comme des tableaux, des journaux ou des rapports.

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

Construire des modèles de format

Stockez les chaînes de format sous forme de constantes afin de les réutiliser. La sortie reste ainsi cohérente et vous pouvez facilement modifier le format à un seul endroit. Le formatage des chaînes est à la base de la journalisation, de la sortie CSV et de la génération de rapports.

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

Remplissage et alignement

Utilisez des spécificateurs de largeur pour aligner la sortie. Une largeur positive aligne à droite ; une largeur négative aligne à gauche. C'est particulièrement utile pour les tableaux et les rapports dont les colonnes doivent être alignées. Combinez cette technique avec string.rep pour créer des lignes de séparation.

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 et %% littéral

%c convertit un entier en caractère ASCII correspondant. %% produit un signe de pourcentage littéral. Ces formats sont utiles pour générer des caractères spéciaux ou inclure % dans des chaînes de format.

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 ou tostring

Utilisez tostring pour une conversion simple de n'importe quel type ; utilisez string.format pour contrôler la précision, le remplissage et la mise en forme de plusieurs valeurs. string.format("%s", val) appelle tostring en interne pour les conversions en chaîne.

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

Vérification rapide

Que produit string.format("%05.2f", 3.1) ?

Récapitulatif : string.format

Résumé :

  • %s chaîne, %d entier, %f nombre à virgule flottante, %x hexadécimal
  • Largeur : %10d alignement à droite, %-10d alignement à gauche, %010d remplissage avec des zéros
  • Précision : %.2f (2 décimales), %.3s (3 caractères)
  • %q entoure une chaîne de guillemets pour l'analyse par Lua
  • %% signe de pourcentage littéral

Questions Fréquemment Posées

La leçon « string.format pour la sortie » est-elle gratuite ?

Oui — le texte complet de « string.format pour la sortie » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « string.format pour la sortie » ?

Formatez des chaînes avec %s, %d, %f et d’autres spécificateurs de format. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Lua Academy ?

Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « string.format pour la sortie » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?

Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Notions de base sur les chaînes : concaténation et longueur
  2. Rechercher et extraire des sous-chaînes
  3. string.format pour la sortie
  4. string.gsub et string.gmatch
← Retour à Lua Academy