Lua字符串格式化选项

26
这可能看起来是个愚蠢的问题,但在string.format中用于字符串替换的符号是什么? 有人可以给我一个简单的例子吗?
4个回答

24

谢谢!(我也已删除了我的评论。没必要保留它 :) ) - Lazerbeak12345

10

第20章中的 string.format 函数在末尾进行了描述:

string.format 函数是格式化字符串(通常用于输出)时非常强大的工具。 它返回一个格式化后的字符串,其变量数目取决于给定的第一个参数,即所谓的格式字符串。 格式字符串的规则类似于标准 C 的 printf 函数: 它由常规文本和指令组成,控制每个参数在格式化字符串中的位置和方式。

Lua 参考手册 中表示:

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

该函数的实现位于strlib.cstr_format() 中,它本身解释了格式字符串,但在确定每个字段所期望的值类型(基本上是字符串或数字)与每个字段相对应之后,转而使用 C 库的实现 sprintf() 来实际格式化每个字段。


6

如果你使用的是安装程序,那么你的硬盘中应该有“Lua快速参考”HTML文件。

例如:../Lua/5.1/docs/luarefv51.html

在里面,你将找到:

string.format (s [, args ])

  • 格式化指令
  • 格式化字段类型
  • 格式化标识符
  • 格式化示例

3

除了其他答案所提到的,Lua确实有布尔数据类型,而C则没有。C使用数字来表示布尔值,其中0为false,其余数值均为true

然而,在Lua中将布尔值格式化为字符串时,

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

gets(至少在Hammerspoon中):

'format'的第2个参数错误(应为数字,但得到了布尔值)

您可以改用%s来表示布尔值(与字符串一样):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接