Lua string.format() 使用整理 | 您所在的位置:网站首页 › 格式化的语言 › Lua string.format() 使用整理 |
在使用 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 实验室设备网 版权所有 |