• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

关闭

返回栏目

关闭

返回Lua栏目

16 - 字符串类型 - 格式化字符串 - 使用 string.format

作者:

贺及楼

成为作者

更新日期:2025-02-27 21:41:13

Lua 《字符串类型 - 格式化字符串 - 使用 string.format》

在 Lua 编程中,字符串是一种非常常用的数据类型。而在处理字符串时,格式化字符串是一项重要的操作。string.format 函数为我们提供了强大的字符串格式化能力,它可以根据指定的格式将多个值组合成一个新的字符串。本文将详细介绍 string.format 函数的使用方法,并通过丰富的示例代码帮助大家更好地理解和掌握。

基本语法

string.format 函数的基本语法如下:

  1. string.format(formatstring,...)
  • formatstring:是一个包含格式说明符的字符串,用于指定输出的格式。
  • ...:是可变参数列表,包含要格式化的值。

格式说明符

格式说明符以 % 开头,后面可以跟一些可选的修饰符,最后是一个转换字符,用于指定要格式化的值的类型。常见的转换字符如下:

转换字符 描述
%d 以十进制整数形式格式化整数
%f 以浮点数形式格式化数值
%s 格式化字符串
%x 以十六进制小写形式格式化整数
%X 以十六进制大写形式格式化整数
%o 以八进制形式格式化整数

示例代码

  1. -- 格式化整数
  2. local num1 = 123
  3. local formatted_num1 = string.format("十进制整数: %d", num1)
  4. print(formatted_num1) -- 输出: 十进制整数: 123
  5. -- 格式化浮点数
  6. local num2 = 3.14159
  7. local formatted_num2 = string.format("浮点数: %.2f", num2)
  8. print(formatted_num2) -- 输出: 浮点数: 3.14
  9. -- 格式化字符串
  10. local str = "Hello"
  11. local formatted_str = string.format("字符串: %s, World!", str)
  12. print(formatted_str) -- 输出: 字符串: Hello, World!
  13. -- 格式化十六进制整数
  14. local hex_num = 255
  15. local formatted_hex1 = string.format("十六进制小写: %x", hex_num)
  16. local formatted_hex2 = string.format("十六进制大写: %X", hex_num)
  17. print(formatted_hex1) -- 输出: 十六进制小写: ff
  18. print(formatted_hex2) -- 输出: 十六进制大写: FF
  19. -- 格式化八进制整数
  20. local oct_num = 64
  21. local formatted_oct = string.format("八进制: %o", oct_num)
  22. print(formatted_oct) -- 输出: 八进制: 100

可选修饰符

% 和转换字符之间可以插入一些可选的修饰符,用于进一步控制输出的格式。常见的修饰符如下:

修饰符 描述
- 左对齐
+ 显示正负号
0 用零填充
width 指定最小宽度
.precision 指定浮点数的小数位数

示例代码

  1. -- 左对齐
  2. local left_aligned = string.format("%-10s", "Hello")
  3. print("左对齐: [".. left_aligned.. "]") -- 输出: 左对齐: [Hello ]
  4. -- 显示正负号
  5. local signed_num = 10
  6. local formatted_signed = string.format("%+d", signed_num)
  7. print("显示正负号: ".. formatted_signed) -- 输出: 显示正负号: +10
  8. -- 用零填充
  9. local zero_padded = string.format("%05d", 7)
  10. print("用零填充: ".. zero_padded) -- 输出: 用零填充: 00007
  11. -- 指定最小宽度
  12. local width_specified = string.format("%8s", "Lua")
  13. print("指定最小宽度: [".. width_specified.. "]") -- 输出: 指定最小宽度: [ Lua]
  14. -- 指定浮点数的小数位数
  15. local float_num = 2.71828
  16. local formatted_float = string.format("%.3f", float_num)
  17. print("指定浮点数的小数位数: ".. formatted_float) -- 输出: 指定浮点数的小数位数: 2.718

多个参数的格式化

string.format 函数可以接受多个参数,根据格式说明符依次对这些参数进行格式化。

示例代码

  1. local name = "Alice"
  2. local age = 25
  3. local height = 1.65
  4. local formatted_info = string.format("姓名: %s, 年龄: %d 岁, 身高: %.2f 米", name, age, height)
  5. print(formatted_info) -- 输出: 姓名: Alice, 年龄: 25 岁, 身高: 1.65

总结

string.format 函数是 Lua 中一个非常实用的字符串格式化工具,通过格式说明符和可选修饰符,我们可以灵活地控制输出字符串的格式。熟练掌握 string.format 函数的使用,能够帮助我们更高效地处理和输出字符串,提升代码的可读性和可维护性。希望本文的介绍和示例代码能够帮助大家更好地理解和运用这个函数。