0Pricing
Lua Academy · Pelajaran

string.format untuk Keluaran

Format string dengan %s, %d, %f, dan penentu format lainnya.

string.format untuk Keluaran adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Dasar-Dasar string.format

string.format(fmt, ...) memformat nilai menggunakan penentu format bergaya C. Fungsi ini mengembalikan string yang telah diformat. String format berisi teks literal dan penentu konversi yang diawali %. Ini adalah cara utama untuk menghasilkan keluaran yang presisi di 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 dan %i untuk Bilangan Bulat

%d dan %i memformat bilangan bulat. Tambahkan lebar untuk mengisi ruang: %5d meratakan ke kanan hingga 5 karakter. %-5d meratakan ke kiri. %05d mengisi dengan nol. Penentu ini memotong bilangan pecahan—gunakan math.floor() terlebih dahulu jika diperlukan.

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 dan %e untuk Bilangan Pecahan

%f memformat dengan notasi titik tetap; %e dengan notasi ilmiah; %g memilih format yang lebih singkat. Penentu presisi (misalnya %.2f) mengatur jumlah tempat desimal. Presisi bawaan adalah 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 untuk String

%s menyisipkan string. Nilai non-string dikonversi dengan tostring. Lebar dan perataan berfungsi seperti pada angka. %q memberi tanda kutip pada string dalam format yang dapat dibaca Lua (dengan escape), sehingga berguna untuk serialisasi.

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 dan %o untuk Basis Lain

%x memformat bilangan bulat dalam heksadesimal (huruf kecil); %X dalam heksadesimal huruf besar; %o dalam oktal; %u sebagai bilangan bulat tanpa tanda. Semua ini berguna untuk menampilkan masker bit, kode warna, dan pemrograman tingkat rendah.

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

Beberapa Nilai

Berikan argumen sebanyak jumlah penentu format. Jumlah argumen harus sesuai—terlalu sedikit menyebabkan kesalahan; argumen tambahan diabaikan. Gunakan string format untuk membangun keluaran terstruktur seperti tabel, catatan, atau laporan.

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

Membangun Templat Format

Simpan string format sebagai konstanta agar dapat digunakan kembali. Dengan demikian, keluaran tetap konsisten dan format dapat diubah dengan mudah dari satu tempat. Format string merupakan dasar pencatatan, keluaran CSV, dan pembuatan laporan.

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

Pengisian dan Perataan

Gunakan penentu lebar untuk menghasilkan keluaran yang rata. Lebar positif meratakan ke kanan; lebar negatif meratakan ke kiri. Ini sangat berguna untuk tabel dan laporan yang kolomnya perlu sejajar. Gabungkan dengan string.rep untuk membuat garis pemisah.

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 dan %% Literal

%c mengonversi bilangan bulat menjadi karakter ASCII yang sesuai. %% menghasilkan tanda persen literal. Keduanya berguna untuk menghasilkan karakter khusus atau menyertakan % dalam string 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 vs tostring

Gunakan tostring untuk konversi sederhana dari tipe apa pun; gunakan string.format untuk mengatur presisi, pengisian, dan pemformatan beberapa nilai. string.format("%s", val) secara internal memanggil tostring untuk konversi string.

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

Pemeriksaan Singkat

Apa hasil dari string.format("%05.2f", 3.1)?

Ringkasan: string.format

Ringkasan:

  • %s string, %d bilangan bulat, %f bilangan pecahan, %x heksadesimal
  • Lebar: %10d rata kanan, %-10d rata kiri, %010d diisi nol
  • Presisi: %.2f (2 tempat desimal), %.3s (3 karakter)
  • %q memberi tanda kutip pada string untuk penguraian Lua
  • %% tanda persen literal

Pertanyaan yang Sering Diajukan

Apakah pelajaran “string.format untuk Keluaran” gratis?

Ya — teks lengkap “string.format untuk Keluaran” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “string.format untuk Keluaran”?

Format string dengan %s, %d, %f, dan penentu format lainnya. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “string.format untuk Keluaran” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar String: Penggabungan dan Panjang
  2. Menemukan dan Mengekstrak Substring
  3. string.format untuk Keluaran
  4. string.gsub dan string.gmatch
← Kembali ke Lua Academy