|
课程链接
这节课主要讲解了Lua中string 库的几个重要函数,重点围绕字符串的匹配、替换和提取操作。以下是课程的核心内容总结:
1. gmatch 函数(全局匹配迭代器)
2. gsub 函数(全局替换)
- 作用:替换字符串中所有匹配模式的子串。
- 语法:
string.gsub(s, pattern, repl [, n])
- 示例:
local str = "apple banana apple"
local new_str, count = string.gsub(str, "apple", "orange")
print(new_str) -- "orange banana orange"
print(count) -- 2(替换次数)
- 高级用法:
- 使用函数动态生成替换值:
local str = "4+5=?"
local result = string.gsub(str, "(%d+)%+(%d+)", function(a, b)
return tonumber(a) + tonumber(b)
end)
print(result) -- "4+5=9"
3. sub 函数(子串提取)
- 作用:提取字符串的指定部分。
- 语法:
string.sub(s, start [, end])
- 示例:
local str = "hello world"
print(string.sub(str, 1, 5)) -- "hello"
print(string.sub(str, -5)) -- "world"(从倒数第5个字符开始)
- 注意:中文字符在GB2312/GBK编码中占2字节,UTF-8中占3字节,需谨慎处理索引。
4. 语法糖(简化调用)
5. 匹配模式(Pattern)
- 常用符号:
%a :字母,%d :数字,%s :空格,%w :字母或数字。
+ (1次或多次),* (0次或多次),- (最小匹配)。
- 特殊字符转义:用
% (如%% 匹配百分号)。
- 示例:
local date = "2025-05-24"
local y, m, d = string.match(date, "(%d+)-(%d+)-(%d+)")
print(y, m, d) -- "2025", "05", "24"
6. 编码与字符处理
7. 实战应用
总结
- 重点函数:
gmatch (迭代匹配)、gsub (替换)、sub (提取)。
- 核心技巧:模式匹配(
%a , %d 等)、语法糖、编码处理。
- 工具推荐:使用在线正则工具辅助生成复杂模式(如Lua正则测试)。
通过练习这些函数,可以高效处理字符串的查找、替换和切片操作,尤其在游戏开发或数据处理中极为实用。
|
|