Lua字符串格式化format函数

Lua字符串格式化format函数教程

Lua 中 format 函数用于格式化字符串,返回一个类似 printf 的格式化字符串。函数的第一个参数是格式, 之后是对应格式中每个代号的各种数据。

由于格式字符串的存在, 使得产生的长字符串可读性大大提高了。这个函数的格式很像 C 语言 中的 printf()。

format函数详解

语法

string.format(...)

参数

参数 描述
可变参数

返回值

返回一个类似 printf 的格式化字符串。

format函数格式

格式字符串可能包含以下的转义码:

格式 描述
%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 位。

案例

format字符串格式化

使用 format() 函数,实现字符串格式化

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") print(string.format("Study %s from %s", "Lua", "HaiCoder")) year = 2023 month = 10 day = 1 print(string.format("Today is %04d-%02d-%02d", year, month, day))

程序运行后,控制台输出如下:

13_Lua格式化字符串format函数.png

我们使用了 string.format 实现了字符串格式化。

format数字格式化

使用 format() 函数,实现数字格式化

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") print(string.format("%c", 83)) print(string.format("%+d", 17.0)) print(string.format("%05d", 17))

程序运行后,控制台输出如下:

14_Lua格式化字符串format函数.png

我们使用了 string.format 实现了数字的格式化。

Lua字符串格式化format函数总结

在 Lua 中 format 函数用于格式化字符串,返回一个类似 printf 的格式化字符串。函数的第一个参数是格式, 之后是对应格式中每个代号的各种数据。

由于格式字符串的存在, 使得产生的长字符串可读性大大提高了。这个函数的格式很像 C 语言中的 printf()。