|
课程链接
Lua字符串库(string)
1. 基础认知
- string库本质:操作字符串的系统函数库,类型为
table
print(type(string)) --> "table"
for k,v in pairs(string) do print(k,v) end -- 查看所有方法
2. 核心函数解析
(1) 字符与ASCII互转
- **
string.byte(s, [i], [j]) **
将字符转ASCII码(默认取首字符)
print(string.byte("A")) --> 65
print(string.byte("ABC", 1, 3)) --> 65 66 67
- **
string.char(...) **
将ASCII码转字符
print(string.char(65)) --> "A"
(2) 字符串查找
- **
string.find(s, pattern, [init], [plain]) **
返回匹配的起止位置(未找到返回nil )
local s = "hello123"
print(string.find(s, "l")) --> 3 3
print(string.find(s, "%d+")) --> 6 8(匹配数字)
print(string.find(s, "l", 4)) --> 4 4(从第4位开始找)
- 语法糖形式
s:find("l") -- 等价于 string.find(s, "l")
(3) 字符串匹配
- **
string.match(s, pattern, [init]) **
直接返回匹配内容(非位置)
print(string.match("name: Alice", "(%a+):%s*(%a+)")) --> "name", "Alice"
- **
string.gmatch(s, pattern) **
返回迭代器,用于遍历所有匹配
for word in ("hello world"):gmatch("%a+") do
print(word) --> "hello", "world"
end
(4) 字符串格式化
- **
string.format(format, ...) **
使用占位符格式化字符串
local name, age = "Bob", 25
print(string.format("Name: %s, Age: %d", name, age))
-- 常用占位符:
-- %s: 字符串, %d: 整数, %f: 浮点数 (%.2f保留两位小数)
(5) 字符串替换
3. 匹配模式速查
模式 |
说明 |
示例 |
%a |
任意字母 |
"a" ,"Z" |
%d |
任意数字 |
"0" ,"9" |
%s |
空白字符(空格/制表符) |
" " ,"\t" |
%w |
字母或数字 |
"a" ,"1" |
%x |
十六进制数字 |
"A" ,"f" |
+ |
重复1次或多次 |
"%d+" 匹配连续数字 |
* |
重复0次或多次 |
"%a*" 匹配任意字母 |
4. 关键注意点
- 语法糖限制:部分函数(如
gsub )不支持s:gsub() 形式。
- 匹配 vs 占位符:
%d 在匹配模式中表示数字,但在format 中需用%d 表示整数。
- 转义字符:
%% 表示百分号本身(如"50%%" 输出"50%")。
5. 实战案例
-- 提取URL中的域名
local url = "https://www.example.com/path"
local domain = url:match("https?://([%w-.]+)")
print(domain) --> "www.example.com"
-- 格式化表格数据
local data = {{"Alice", 90}, {"Bob", 85}}
for _, v in ipairs(data) do
print(string.format("%-10s | %03d", v[1], v[2]))
end
-- 输出:
-- Alice | 090
-- Bob | 085
掌握这些核心函数后,可高效处理字符串拼接、数据提取、格式化输出等常见需求!
|
|