Lua 的 String 模块 提供了强大的字符串处理功能,主要通过 string 模块实现。以下是 Lua string 模块的主要功能和用法:
基础字符串操作
-
字符串连接
- 使用
..操作符连接字符串
lualocal str = "Hello" .. " " .. "World" -- 结果为 "Hello World" - 使用
-
字符串长度
- 使用
#操作符获取字符串长度
lualocal len = #"Lua" -- 结果为 3 - 使用
常用字符串函数
-
- 截取字符串 s 从位置 i 到 j 的子串
- 示例:
lualocal s = "Programming" print(string.sub(s, 4, 7)) -- 输出 "gram" -
string.find(s, pattern [, init [, plain]])- 在字符串 s 中查找匹配 pattern 的位置
- 示例:
lualocal start, finish = string.find("Hello Lua", "Lua") -- start=7, finish=9 -
string.match(s, pattern [, init])- 返回字符串 s 中匹配 pattern 的第一个子串
- 示例:
lualocal word = string.match("Lua is great", "%a+") -- 返回 "Lua" -
string.gsub(s, pattern, repl [, n])- 全局替换字符串中的匹配项
- 示例:
lualocal s = string.gsub("Lua Lua Lua", "Lua", "Python", 2) -- 结果为 "Python Python Lua"
字符串格式化
-
string.format(formatstring, ...)- 类似 C 的 printf 格式化输出
- 示例:
lualocal formatted = string.format("Value: %.2f", 3.14159) -- 结果为 "Value: 3.14"
字符串转换
-
- 将字符串转换为大写
luaprint(string.upper("lua")) -- 输出 "LUA" -
- 将字符串转换为小写
luaprint(string.lower("LUA")) -- 输出 "lua"
字符串模式匹配(正则表达式)
Lua 提供了轻量级的模式匹配功能:
示例:
lua
local date = "2023-05-15"
local year, month, day = string.match(date, "(%d+)-(%d+)-(%d+)")
-- year="2023", month="05", day="15"
字符串缓冲区
对于大量字符串拼接,可以使用表作为缓冲区:
lua
local buf = {}
for i = 1, 100 do
buf[#buf+1] = "line " .. i
end
local result = table.concat(buf, "\n")
UTF-8 支持(Lua 5.3+)
Lua 5.3 及以上版本增加了 UTF-8 支持:
utf8.len(s): 获取 UTF-8 字符串长度utf8.codepoint(s, i, j): 获取码点utf8.char(...): 从码点创建字符串
lua
local len = utf8.len("你好") -- 结果为 2
Lua 的字符串处理功能强大而高效,是处理文本数据的理想选择。