这似乎是一个愚蠢的问题,但是在 string.format 中用于字符串替换的符号是什么?有人可以给我一个简单的例子来说明如何使用它吗?
4 回答
Lua 中的 string.format 遵循与 c 中的 Printf 相同的模式:
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
有一些例外情况,请参见此处:
PiL 的第 20 章string.format
在接近尾声时描述:
该函数
string.format
是格式化字符串时的强大工具,通常用于输出。它根据其第一个参数(所谓的格式字符串)给出的描述返回其可变数量参数的格式化版本。格式字符串的规则与标准 C 函数的规则相似printf
:它由常规文本和指令组成,它们控制每个参数必须放在格式化字符串中的位置和方式。
Lua 参考说:
printf
格式字符串遵循与标准 C 函数系列相同的规则。唯一的区别是不支持选项/修饰符*
,l
,L
,n
,p
和 ,并且h
有一个额外的选项 ,q
。
该函数是由它自己解释格式字符串来实现的,但是在确定期望什么类型的值(本质上是字符串或数字)对应于每个字段之后,根据 C 库的实现str_format()
来strlib.c
sprintf()
实际格式化每个字段。
如果您使用安装包,您的硬盘中应该有“Lua 快速参考”html 文件。
(例如:../Lua/5.1/docs/luarefv51.html)
在那里你会发现,除其他外,
string.format (s [, args ])
- 格式化指令
- 格式化字段类型
- 格式化标志
- 格式化示例
添加到其他答案:Lua 确实具有布尔数据类型,而 C 没有。C为此使用数字,其中 0 是false
,其他一切都是true
。
但是,要在 Lua 中格式化字符串中的布尔值,
local text = string.format("bool is %d", truth)
得到(至少在 Hammerspoon 中):
'格式'的错误参数#2(预期数字,得到布尔值)
您可以改为使用%s
布尔值(如字符串):
local text = string.format("bool is %s", truth)