API format

Formats a string by substituting arguments.
 result = string.format(pattern, ...)
 = format
 = s:format
==Arguments==
:;pattern: - Contains directives like %s or %d (see details). Also called the format string.
:;...: - Substituted into each directive; the type must be a kind that can convert to the type specified by the directive.
==Returns==
:;result:
==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==
* http://www.gnu.org/software/libc/manual/html_node/Formatted-Output.html#Formatted-Output
==References==