开发者

Lua string.format options

This may seem like 开发者_开发问答a stupid question, but what are the symbols used for string replacement in string.format? can someone point me to a simple example of how to use it?


string.format in Lua follows the same patterns as Printf in c:

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

There are some exceptions, for those see here:

http://pgl.yoyo.org/luai/i/string.format


Chapter 20 of PiL describes string.format near the end:

The function string.format is a powerful tool when formatting strings, typically for output. It returns a formatted version of its variable number of arguments following the description given by its first argument, the so-called format string. The format string has rules similar to those of the printf function of standard C: It is composed of regular text and directives, which control where and how each argument must be placed in the formatted string.

The Lua Reference says:

The format string follows the same rules as the printf family of standard C functions. The only differences are that the options/modifiers *, l, L, n, p, and h are not supported and that there is an extra option, q.

The function is implemented by str_format() in strlib.c which itself interprets the format string, but defers to the C library's implementation of sprintf() to actually format each field after determining what type of value is expected (string or number, essentially) to correspond to each field.


There should be "Lua Quick Reference" html file in your hard disk, if you used an installation package.
(for example: ../Lua/5.1/docs/luarefv51.html)

There you'll find, among other things,

string.format (s [, args ])

  • Formatting directives
  • Formatting field types
  • Formatting flags
  • Formatting examples


To add to the other answers: Lua does have a boolean data type, where C does not. C uses numbers for that, where 0 is false and everything else is true.

However, to format a boolean in a String in Lua,

local text = string.format("bool is %d", truth)

gets (at least in Hammerspoon):

bad argument #2 to 'format' (number expected, got boolean)

You can instead use %s for booleans (as for strings):

local text = string.format("bool is %s", truth)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜