Lua string.format() 使用整理 您所在的位置:网站首页 格式化的语言 Lua string.format() 使用整理

Lua string.format() 使用整理

2024-07-16 06:56| 来源: 网络整理| 查看: 265

在使用 Lua 进行实际开发的过程中,格式化字符串的函数 string.format() 的使用频率是非常高的,这里整理一下关于这个函数的使用。

参数解析 string.format(formatstring, ...)

formatstring 为格式化串(必须是一个字符串),其中可能包含多个转义码(例如最为常用的 %d %s 等)。

... 为数量不定的参数列表,以逗号分隔,与格式化串中的转义码一一对应。

返回值为格式化之后的字符串(string)。

e.g.

print(string.format("%s Have %d Olympic Gold Medals!", "Kevin Durant", 3)) -- Kevin Durant Have 3 Olympic Gold Medals! 转义码

格式化串中支持的转义码有以下这些:

%c

接收一个数字,并将其转化为 ASCII 码表中对应的字符。

print(string.format("%c", 65))  -- A print(string.format("%c", 97))  -- a %d

接收一个数字,并将其转化为有符号的整数格式。(%i 与 %d 作用一致)

print(string.format("%d", 666))  -- 666 print(string.format("%d", -666))  -- -666 %e

接收一个数字,并将其转化为科学记数法格式, 使用小写字母 e。

print(string.format("%e", 666))  -- 6.660000e+002 print(string.format("%e", -666))  -- -6.660000e+002 %E

接收一个数字,并将其转化为科学记数法格式, 使用大写字母 E。

print(string.format("%E", 666))  -- 6.660000E+002 print(string.format("%E", -666))  -- -6.660000E+002 %f

接收一个数字,并将其转化为浮点数格式。

print(string.format("%f", 666))  -- 666.000000 print(string.format("%f", -666))  -- -666.000000 %g

接收一个数字,并将其转化为 %e 及 %f 中较短的一种格式。

print(string.format("%g", 666666))  -- 666666 print(string.format("%g", -6666666))  -- -6.66667e+006 %G

接收一个数字,并将其转化为 %G 及 %f 中较短的一种格式。

print(string.format("%G", 666666))  -- 666666 print(string.format("%G", -6666666))  -- -6.66667E+006 %o

接收一个数字,并将其转化为八进制数格式。

print(string.format("%o", 10))  -- 12 print(string.format("%o", 17))  -- 21 %q

接收一个字符串,并将其转化为可安全被 Lua 编译器读入的格式。

print(string.format('%q', 'Hello \n "fightsyj" !')) -- "Hello \ --  \"fightsyj\" !" %s

接收一个字符串,并按照给定的参数格式化该字符串。

print(string.format("Hello %s !", "fightsyj"))  -- Hello fightsyj ! %u

接收一个数字,并将其转化为无符号整数格式。

print(string.format("%u", 666))  -- 666 print(string.format("%u", -1))  -- 4294967295

关于上面示例中用 %u 格式化 -1 时输出一个很大的数的详解。

%x

接收一个数字,并将其转化为十六进制数格式,使用小写字母。

print(string.format("%x", 15))  -- f print(string.format("%x", 666))  -- 29a %X

接收一个数字,并将其转化为十六进制数格式, 使用大写字母。

print(string.format("%X", 15))  -- F print(string.format("%X", 666))  -- 29A 转义码参数

为进一步细化格式,还可以在转义码的 % 后添加参数:

+

表示其后的数字转义码将让正数显示正号。(默认情况下只有负数显示符号)

print(string.format("%d", -666))  -- -666 print(string.format("%d", 666))  -- 666 print(string.format("%+d", -666))  -- -666 print(string.format("%+d", 666))  -- +666 0

在后面指定了字串宽度时占位用(不填时的默认占位符是空格)。

print(string.format("%d", 666))  -- 666 print(string.format("%5d", 666))   --   666 print(string.format("%05d", 666))  -- 00666 -

在指定了字串宽度时,默认为右对齐,增加 - 可以改为左对齐。

print(string.format("%d", 666))  -- 666 print(string.format("%5d", 666))  --   666 print(string.format("%-5d", 666))  -- 666   .

当转义码是 %f 时,后接数字 n,标明保留的 n 位小数; 当转义码是 %s 时,后接数字 n,标明显示前面 n 位。

-- %f print(string.format("%f", 666))  -- 666.000000 print(string.format("%0.2f", 666))  -- 666.00 print(string.format("%.2f", 666))  -- 666.00 -- %s print(string.format("%s", "Hello"))  -- Hello print(string.format("%0.2s", "Hello"))  -- He print(string.format("%.2s", "Hello"))  -- He ps 转义码中添加参数的顺序为:%[指定参数][标识符][宽度][.精度]指示符。使用 string.format() 输出 % 需要用 %%。

e.g.

print(string.format("%d%%", 50))  -- 50%


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有