0Pricing
Lua Academy · 강의

출력을 위한 string.format

%s, %d, %f 및 기타 형식 지정자로 문자열을 서식화합니다.

출력을 위한 string.format은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

string.format 기초

string.format(fmt, ...)은 C 스타일 서식 지정자를 사용해 값을 서식화합니다. 서식이 적용된 문자열을 반환합니다. 서식 문자열에는 일반 텍스트와 %로 시작하는 변환 지정자가 들어 있습니다. 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와 %i

%d와 %i는 정수를 서식화합니다. 너비를 추가하면 여백을 채울 수 있습니다. %5d는 5칸 너비에 맞춰 오른쪽 정렬하고, %-5d는 왼쪽 정렬합니다. %05d는 0으로 채웁니다. 이러한 지정자는 부동 소수점 수를 잘라내므로, 필요한 경우 먼저 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와 %e

%f는 고정 소수점 표기법으로, %e는 지수 표기법으로 서식화합니다. %g는 둘 중 더 짧은 형식을 선택합니다. 정밀도 지정자(예: %.2f)로 소수점 이하 자릿수를 정합니다. 기본 정밀도는 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

%s는 문자열을 삽입합니다. 문자열이 아닌 값은 tostring으로 변환됩니다. 너비와 정렬은 숫자와 같은 방식으로 작동합니다. %q는 이스케이프가 포함된 Lua에서 읽을 수 있는 형식으로 문자열을 인용하므로 직렬화에 유용합니다.

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와 %o

%x는 정수를 16진수 소문자로, %X는 16진수 대문자로, %o는 8진수로, %u는 부호 없는 정수로 서식화합니다. 비트 마스크 표시, 색상 코드, 저수준 프로그래밍에 유용합니다.

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

여러 값

서식 지정자의 개수만큼 인수를 전달하십시오. 인수 개수가 일치해야 합니다. 인수가 너무 적으면 오류가 발생하고, 남는 인수는 무시됩니다. 서식 문자열을 사용하면 표, 로그 또는 보고서처럼 구조화된 출력을 만들 수 있습니다.

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

서식 템플릿 만들기

재사용할 서식 문자열을 상수로 저장하십시오. 이렇게 하면 출력 형식이 일관되게 유지되고, 한 곳에서 쉽게 형식을 변경할 수 있습니다. 문자열 서식은 로그 기록, CSV 출력, 보고서 생성의 기반입니다.

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

여백 채우기와 정렬

정렬된 출력에는 너비 지정자를 사용하십시오. 양수 너비는 오른쪽 정렬하고, 음수 너비는 왼쪽 정렬합니다. 열을 맞춰야 하는 표와 보고서에서 특히 유용합니다. string.rep와 결합하면 구분선을 만들 수 있습니다.

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와 %% 리터럴

%c는 정수를 해당하는 ASCII 문자로 변환합니다. %%는 리터럴 퍼센트 기호를 출력합니다. 특수 문자를 생성하거나 서식 문자열에 %를 포함할 때 유용합니다.

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과 tostring 비교

단순한 모든 형식의 변환에는 tostring을 사용하고, 정밀도 제어, 여백 채우기, 여러 값의 서식화에는 string.format을 사용하십시오. string.format("%s", val)은 문자열 변환을 위해 내부적으로 tostring을 호출합니다.

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

빠른 확인

string.format("%05.2f", 3.1)은 무엇을 출력합니까?

복습: string.format

요약:

  • %s 문자열, %d 정수, %f 부동 소수점 수, %x 16진수
  • 너비: %10d 오른쪽 정렬, %-10d 왼쪽 정렬, %010d 0으로 채우기
  • 정밀도: %.2f(소수점 이하 2자리), %.3s(문자 3개)
  • %q는 Lua에서 해석할 수 있도록 문자열을 인용합니다
  • %% 리터럴 퍼센트 기호

자주 묻는 질문

“출력을 위한 string.format” 강의는 무료인가요?

네 — “출력을 위한 string.format” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“출력을 위한 string.format”에서 뭘 배우나요?

%s, %d, %f 및 기타 형식 지정자로 문자열을 서식화합니다. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Lua Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“출력을 위한 string.format” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 문자열 기초: 연결과 길이
  2. 부분 문자열 찾기와 추출
  3. 출력을 위한 string.format
  4. string.gsub와 string.gmatch
← Lua Academy(으)로 돌아가기