24

这似乎是一个愚蠢的问题,但是在 string.format 中用于字符串替换的符号是什么?有人可以给我一个简单的例子来说明如何使用它吗?

4

4 回答 4

23

Lua 中的 string.format 遵循与 c 中的 Printf 相同的模式:

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

有一些例外情况,请参见此处:

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

于 2009-11-28T07:34:47.397 回答
8

PiL 的第 20 章string.format在接近尾声时描述:

该函数string.format是格式化字符串时的强大工具,通常用于输出。它根据其第一个参数(所谓的格式字符串)给出的描述返回其可变数量参数的格式化版本。格式字符串的规则与标准 C 函数的规则相似printf:它由常规文本和指令组成,它们控制每个参数必须放在格式化字符串中的位置和方式。

Lua 参考说:

printf格式字符串遵循与标准 C 函数系列相同的规则。唯一的区别是不支持选项/修饰符*, l, L, n, p和 ,并且h有一个额外的选项 , q

该函数是由它自己解释格式字符串来实现的,但是在确定期望什么类型的值(本质上是字符串或数字)对应于每个字段之后,根据 C 库的实现str_format()strlib.csprintf()实际格式化每个字段。

于 2009-12-07T21:40:27.617 回答
4

如果您使用安装包,您的硬盘中应该有“Lua 快速参考”html 文件。
(例如:../Lua/5.1/docs/luarefv51.html)

在那里你会发现,除其他外,

string.format (s [, args ])

  • 格式化指令
  • 格式化字段类型
  • 格式化标志
  • 格式化示例
于 2009-11-28T08:10:39.197 回答
1

添加到其他答案: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)
于 2021-11-02T15:33:18.157 回答