
在 Lua 编程中,字符串是一种非常常用的数据类型。而在处理字符串时,格式化字符串是一项重要的操作。string.format 函数为我们提供了强大的字符串格式化能力,它可以根据指定的格式将多个值组合成一个新的字符串。本文将详细介绍 string.format 函数的使用方法,并通过丰富的示例代码帮助大家更好地理解和掌握。
string.format 函数的基本语法如下:
string.format(formatstring,...)
formatstring:是一个包含格式说明符的字符串,用于指定输出的格式。...:是可变参数列表,包含要格式化的值。格式说明符以 % 开头,后面可以跟一些可选的修饰符,最后是一个转换字符,用于指定要格式化的值的类型。常见的转换字符如下:
| 转换字符 | 描述 |
|---|---|
%d |
以十进制整数形式格式化整数 |
%f |
以浮点数形式格式化数值 |
%s |
格式化字符串 |
%x |
以十六进制小写形式格式化整数 |
%X |
以十六进制大写形式格式化整数 |
%o |
以八进制形式格式化整数 |
-- 格式化整数local num1 = 123local formatted_num1 = string.format("十进制整数: %d", num1)print(formatted_num1) -- 输出: 十进制整数: 123-- 格式化浮点数local num2 = 3.14159local formatted_num2 = string.format("浮点数: %.2f", num2)print(formatted_num2) -- 输出: 浮点数: 3.14-- 格式化字符串local str = "Hello"local formatted_str = string.format("字符串: %s, World!", str)print(formatted_str) -- 输出: 字符串: Hello, World!-- 格式化十六进制整数local hex_num = 255local formatted_hex1 = string.format("十六进制小写: %x", hex_num)local formatted_hex2 = string.format("十六进制大写: %X", hex_num)print(formatted_hex1) -- 输出: 十六进制小写: ffprint(formatted_hex2) -- 输出: 十六进制大写: FF-- 格式化八进制整数local oct_num = 64local formatted_oct = string.format("八进制: %o", oct_num)print(formatted_oct) -- 输出: 八进制: 100
在 % 和转换字符之间可以插入一些可选的修饰符,用于进一步控制输出的格式。常见的修饰符如下:
| 修饰符 | 描述 |
|---|---|
- |
左对齐 |
+ |
显示正负号 |
0 |
用零填充 |
width |
指定最小宽度 |
.precision |
指定浮点数的小数位数 |
-- 左对齐local left_aligned = string.format("%-10s", "Hello")print("左对齐: [".. left_aligned.. "]") -- 输出: 左对齐: [Hello ]-- 显示正负号local signed_num = 10local formatted_signed = string.format("%+d", signed_num)print("显示正负号: ".. formatted_signed) -- 输出: 显示正负号: +10-- 用零填充local zero_padded = string.format("%05d", 7)print("用零填充: ".. zero_padded) -- 输出: 用零填充: 00007-- 指定最小宽度local width_specified = string.format("%8s", "Lua")print("指定最小宽度: [".. width_specified.. "]") -- 输出: 指定最小宽度: [ Lua]-- 指定浮点数的小数位数local float_num = 2.71828local formatted_float = string.format("%.3f", float_num)print("指定浮点数的小数位数: ".. formatted_float) -- 输出: 指定浮点数的小数位数: 2.718
string.format 函数可以接受多个参数,根据格式说明符依次对这些参数进行格式化。
local name = "Alice"local age = 25local height = 1.65local formatted_info = string.format("姓名: %s, 年龄: %d 岁, 身高: %.2f 米", name, age, height)print(formatted_info) -- 输出: 姓名: Alice, 年龄: 25 岁, 身高: 1.65 米
string.format 函数是 Lua 中一个非常实用的字符串格式化工具,通过格式说明符和可选修饰符,我们可以灵活地控制输出字符串的格式。熟练掌握 string.format 函数的使用,能够帮助我们更高效地处理和输出字符串,提升代码的可读性和可维护性。希望本文的介绍和示例代码能够帮助大家更好地理解和运用这个函数。