Lua 提供了 string.format() 函数来生成具有特定格式的字符串, 函数的第一个参数是格式 , 之后是对应格式中每个代号的各种数据。
由于格式字符串的存在, 使得产生的长字符串可读性大大提高了。
以下实例演示了如何对字符串进行格式化操作:
-- 日期格式化
date = 2; month = 1; year = 2014
print(string.format("日期格式化 %02d/%02d/%03d", date, month, year))
格式字符串可能包含以下的转义码:
转义码 | 描述 |
---|---|
%c | 接受一个数字, 并将其转化为ASCII码表中对应的字符 |
%d, %i | 接受一个数字并将其转化为有符号的整数格式 |
%o | 接受一个数字并将其转化为八进制数格式 |
%u | 接受一个数字并将其转化为无符号整数格式 |
%x | 接受一个数字并将其转化为十六进制数格式, 使用小写字母 |
%X | 接受一个数字并将其转化为十六进制数格式, 使用大写字母 |
%e | 接受一个数字并将其转化为科学记数法格式, 使用小写字母e |
%E | 接受一个数字并将其转化为科学记数法格式, 使用大写字母E |
%f | 接受一个数字并将其转化为浮点数格式 |
%g(%G) | 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式 |
%q | 接受一个字符串并将其转化为可安全被Lua编译器读入的格式 |
%s | 接受一个字符串并按照给定的参数格式化该字符串 |
为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:
编号 | 符号 | 描述 |
---|---|---|
(1) | 符号 | 一个 + 号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号. |
(2) | 占位符 | 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格. |
(3) | 对齐标识 | 在指定了字串宽度时, 默认为右对齐, 增加 - 号可以改为左对齐. |
(4) | 宽度数值 | |
(5) | 小数位数/字串裁切 | 在宽度数值后增加的小数部分 n, 若后接 f (浮点数转义符, 如 %6.3f )则设定该浮点数的小数只保留 n 位, 若后接 s (字符串转义符, 如 %5.3s )则设定该字符串只显示前 n 位. |