0Pricing
Lua Academy · Ders

Çıktı için string.format

Dizeleri %s, %d, %f ve diğer biçim belirteçleriyle biçimlendirin.

Çıktı için string.format, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

string.format Temelleri

string.format(fmt, ...), değerleri C tarzı biçim belirteçlerini kullanarak biçimlendirir. Biçimlendirilmiş bir dize döndürür. Biçim dizesi, düz metin ile % işaretiyle başlayan dönüştürme belirteçlerini içerir. Lua'da kesin biçimli çıktı üretmenin temel yolu budur.

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

Tam Sayılar için %d ve %i

%d ve %i tam sayıları biçimlendirir. Dolgu için genişlik ekleyin: %5d, genişliği 5 karaktere tamamlayarak sağa hizalar. %-5d sola hizalar. %05d sıfırlarla doldurur. Bu belirteçler kayan sayıları keser; gerekirse önce math.floor() kullanın.

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

Kayan Sayılar için %f ve %e

%f sabit noktalı gösterimle, %e bilimsel gösterimle biçimlendirir; %g ise daha kısa olanı seçer. Hassasiyet belirteci (örneğin %.2f), ondalık basamak sayısını denetler. Varsayılan hassasiyet 6'dır.

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

Dizeler için %s

%s bir dize ekler. Dize olmayan değerler tostring ile dönüştürülür. Genişlik ve hizalama, sayılardaki gibi çalışır. %q, bir dizeyi kaçış karakterleri içeren ve Lua tarafından okunabilen bir biçimde tırnak içine alır; bu, serileştirme için kullanışlıdır.

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

Diğer Tabanlar için %x ve %o

%x, bir tam sayıyı onaltılık sistemde (küçük harflerle) biçimlendirir; %X büyük harfli onaltılık gösterim, %o sekizlik gösterim, %u ise işaretsiz tam sayı gösterimi kullanır. Bunlar bit maskelerini, renk kodlarını ve düşük seviyeli programlamayı görüntülemek için kullanışlıdır.

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

Birden Çok Değer

Biçim belirteci sayısı kadar bağımsız değişken geçirin. Bağımsız değişken sayısı eşleşmelidir; çok az olması hataya neden olur, fazlalıklar yok sayılır. Tablolar, günlükler veya raporlar gibi yapılandırılmış çıktılar oluşturmak için biçim dizelerini kullanın.

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

Biçim Şablonları Oluşturma

Yeniden kullanmak için biçim dizelerini sabit olarak saklayın. Bu, çıktının tutarlı olmasını sağlar ve biçimi tek bir yerden kolayca değiştirmenize olanak tanır. Dize biçimlendirme; günlüklemenin, CSV çıktısının ve rapor oluşturmanın temelidir.

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

Dolgu ve Hizalama

Hizalanmış çıktı için genişlik belirteçlerini kullanın. Pozitif genişlik sağa, negatif genişlik sola hizalar. Bu, özellikle sütunların aynı hizada olması gereken tablolar ve raporlar için kullanışlıdır. Ayırıcı çizgiler için string.rep ile birleştirebilirsiniz.

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 ve %% Değişmezleri

%c, bir tam sayıyı karşılık gelen ASCII karakterine dönüştürür. %%, gerçek bir yüzde işareti üretir. Bunlar özel karakterler oluşturmak veya biçim dizelerine % eklemek için kullanışlıdır.

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 ve tostring Karşılaştırması

Basit, her türden dönüşüm için tostring; hassasiyet denetimi, dolgu ve birden çok değeri biçimlendirmek için string.format kullanın. string.format("%s", val), dize dönüşümleri için dahili olarak tostring çağırır.

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

Hızlı Kontrol

string.format("%05.2f", 3.1) ne üretir?

Özet: string.format

Özet:

  • %s dize, %d tam sayı, %f kayan sayı, %x onaltılık
  • Genişlik: %10d sağa hizalar, %-10d sola hizalar, %010d sıfırlarla doldurur
  • Hassasiyet: %.2f (2 ondalık basamak), %.3s (3 karakter)
  • %q, bir dizeyi Lua tarafından ayrıştırılmak üzere tırnak içine alır
  • %% gerçek yüzde işareti

Sıkça Sorulan Sorular

“Çıktı için string.format” dersi ücretsiz mi?

Evet — “Çıktı için string.format” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Çıktı için string.format” dersinde ne öğreneceğim?

Dizeleri %s, %d, %f ve diğer biçim belirteçleriyle biçimlendirin. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Çıktı için string.format” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Dizelere Giriş: Birleştirme ve Uzunluk
  2. Alt Dizeleri Bulma ve Çıkarma
  3. Çıktı için string.format
  4. string.gsub ve string.gmatch
← Lua Academy Sayfasına Dön