API format
Jump to navigation
Jump to search
Formats a string by substituting arguments.
result = string.format(pattern, ...)
= format
= s:format
Arguments
- pattern
- string - Contains directives like
%sor%d(see details). Also called the format string.[1] - ...
- any - Substituted into each directive; the type must be a kind that can convert to the type specified by the directive.
Returns
- result
- string
Details
| Base Directives | Description |
|---|---|
%c |
Character |
%d, %i |
Integer |
%e, %E |
Scientific notation |
%f |
Floating number |
%g, %G |
Floating number or scientific notation |
%o |
Octal |
%x, %X |
Hexadecimal |
%s |
String |
%q |
Escaped string with quotes |
%u |
Unsigned |
%% |
Escaped percent sign |
| Modifiers | Examples | Description |
|---|---|---|
| Number | %5d, %3s |
Minimum digits or string length with leading spaces |
| Zero and number | %05d, %03s |
Minimum digits or string length with leading zeroes |
| Decimal and number | %.2f, %.4s |
Decimal places, significant digits or maximum string length |
| Plus sign | %+d, #+f |
Leading sign to align with negative values. |
| Space | % d, # f |
Leading space to align with negative values. |
| Hash | %#o, %#x |
Include octal/hexadecimal prefixes. |
| Number and dollar sign | %2$d, %1$s |
Selects arguments out of order. |
Example
> = string.format("%s %q", "Hello", "Lua user!") -- string and quoted string
Hello "Lua user!"
> = string.format("%c%c%c", 76,117,97) -- char
Lua
> = string.format("%e, %E", math.pi,math.pi) -- exponent
3.141593e+000, 3.141593E+000
> = string.format("%f, %g, %.2f", math.pi, math.pi, math.pi) -- float and compact float
3.141593, 3.14159, 3.14
> = string.format("%d, %i, %u", -100,-100,-100) -- signed, signed, unsigned integer
-100, -100, 4294967196
> = string.format("%o, %x, %X", -100,-100,-100) -- octal, hex, hex
37777777634, ffffff9c, FFFFFF9C
> = string.format("%2$d -> %1$03d", 1, 34) -- 2nd arg, 1st arg with leading zeroes
34 -> 001
> = string.format("Ratio is %u %%",12) -- unsigned, escaped %
Ratio is 12 %
Macro Example
This macro prints out the time remaining on the Polymorph debuff in seconds, rounded to the nearest whole number:
/run for i=1,40 do local n,_,_,_,_,_,x,_,_=UnitDebuff("focus",i);if (n=="Polymorph")or (n=="Polymorph(Pig)")or (n=="Polymorph(Turtle)")then SendChatMessage('''format("%.0f"''',-1*(GetTime()-x)).." secs left on "..UnitName("focus").."'s CC!","EMOTE");end end
External links
References
- ^ Roberto lerusalimschy 2004-01-11. Programming in Lua.