Lua字符串格式选项

这可能看起来是一个愚蠢的问题,但是 string.format 中使用的替换字符串的符号是什么?有人可以向我指出一个简单的示例如何使用它吗?

原文链接 https://stackoverflow.com/questions/1811884

点赞
stackoverflow用户102937
stackoverflow用户102937

string.format 在 Lua 中的用法和 c 语言中的 printf 函数相同:

https://cplusplus.com/reference/cstdio/printf/

但是有一些例外情况,可以在这里查看:

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

2009-11-28 07:34:47
stackoverflow用户108130
stackoverflow用户108130

在你的硬盘中应该有一个叫做“Lua快速参考”的html文件,如果你使用的是安装包。

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

在那里,你会找到,除其他内容外,

string.format (s [, args ])
  • 格式化指令
  • 格式化字段类型
  • 格式化标志
  • 格式化示例
2009-11-28 08:10:39
stackoverflow用户68204
stackoverflow用户68204

PiL 第20章 在末尾描述了 string.format:

string.format 函数是一个格式化字符串的强大工具,通常用于输出。它返回一个格式化过的版本,根据其第一个参数即所谓的格式化字符串所给出的说明以及其变量数的参数。格式化字符串的规则类似于标准 C 的 printf 函数:它由常规文本和指令组成,这些指令控制每个参数在格式化字符串中应放置的位置和方式。

Lua 参考手册 中指出:

格式化字符串遵循标准 C 函数家族 printf 的规则。唯一的区别是不支持选项/修饰符 *lLnph,但有一个额外的选项 q

该函数实现由strlib.c中的 str_format() 实现,它解释了格式化字符串,但是在确定每个字段所期望的值类型(基本上是字符串或数字)以对应每个字段之后,将委托给C库的实现 sprintf() 来实际格式化每个字段。

2009-12-07 21:40:27
stackoverflow用户1431720
stackoverflow用户1431720

为了补充其他答案:Lua 有一个布尔数据类型,而 C 没有。C 使用数字表示,其中 0 表示 false,其他所有数字都表示 true

但是,在 Lua 中要将布尔值格式化为字符串,

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

至少在 Hammerspoon 中会出现以下错误:

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

您可以使用 %s 对布尔值进行格式化(就像对字符串一样):

local text = string.format("bool is %s", truth)
2021-11-02 15:33:18