Lua 接口说明书 · 996引擎LUA API REFERENCE · 5.1/5.3

字符串库

STRING

字符串处理:查找替换、模式匹配、格式化 | 本页 14 个接口。登录全站学员账号后:给函数打 ✓ 记录学习进度、写私人备注。

string.byte (s [, i [, j]])
📖 用途

把字符串 s 中 [i, j](默认 [1,1])的字符转成数字字节码。

📥 参数
参数说明
s字符串
i起始位置,默认 1
j结束位置,默认 i
📤 返回值

多个数字字节码

💻 用法案例
print(string.byte('ABC'))        --> 65
print(string.byte('ABC', 1, 3))  --> 65 66 67
string.char (...)
📖 用途

把若干数字字节码拼成字符串,是 string.byte 的逆操作。

📥 参数
参数说明
...多个字节码数字
📤 返回值

字符串

💻 用法案例
print(string.char(72, 105))   --> Hi
print(string.char(0xBB, 0xD8))   -- GBK 的'回'字(按编码环境)
string.dump (function)
📖 用途

把函数序列化成二进制字符串(可被 load/loadstring 还原执行)。要求函数没有 upvalue。

📥 参数
参数说明
functionLua 函数
📤 返回值

二进制字符串

💻 用法案例
local f = loadstring(string.dump(function(x) return x * 2 end))
print(f(21))   --> 42
string.find (s, pattern [, init [, plain]])
📖 用途

查找子串/模式,返回首尾位置(找不到返回 nil)。plain=true 时关闭模式匹配按纯文本查找。模式语法见 string.match。

📥 参数
参数说明
s目标字符串
pattern模式/子串
init起始查找位置,默认 1
plaintrue=纯文本查找
📤 返回值

起位置, 止位置, (捕获组...);找不到 nil

💻 用法案例
print(string.find('hello world', 'wor'))       --> 7  9
print(string.find('abc123', '%d+'))            --> 4  6
print(string.find('a.b.c', '.', 1, true))      --> 2  2 (纯文本的'.')
string.format (formatstring, ...)
📖 用途

按格式串生成字符串(同 C 的 printf)。常用:%d 整数、%s 字符串、%.2f 两位小数、%5d 宽度、%02d 补零、%x 十六进制。

📥 参数
参数说明
formatstring格式串
...填充值
📤 返回值

格式化后的字符串

💻 用法案例
print(string.format('等级:%d 经验:%.2f%%', 35, 99.567))
--> 等级:35 经验:99.57%
print(string.format('%05d', 42))      --> 00042
print(string.format('%x', 255))       --> ff
string.gmatch (s, pattern)
📖 用途

返回迭代器,依次遍历 s 中所有匹配 pattern 的子串(有捕获组则返回捕获组)。提取全部数据的利器。

📥 参数
参数说明
s目标字符串
pattern模式
📤 返回值

迭代函数

💻 用法案例
for k, v in string.gmatch('a=1,b=2,c=3', '(%w+)=(%w+)') do
    print(k, v)
end
--> a 1 / b 2 / c 3
string.gsub (s, pattern, repl [, n])
📖 用途

把 s 中所有匹配 pattern 的部分替换为 repl(字符串/%1引用捕获/函数/table 形式均可),n 限制替换次数。返回新串+替换次数。

📥 参数
参数说明
s目标字符串
pattern模式
repl替换内容(字符串/表/函数)
n最多替换次数,默认全部
📤 返回值

新字符串, 替换次数

💻 用法案例
print(string.gsub('你好 世界', '%s', '_'))   --> 你好_世界  1
print(string.gsub('经验+100', '%d+', function(n) return n * 2 end))
--> 经验+200  1
print(string.gsub('abcabc', 'a', 'X', 1))    --> Xbcabc  1
string.len (s)
📖 用途

返回字符串的字节长度(等价 #s)。中文在 GBK 下一个字占 2 字节、UTF-8 下占 3 字节。

📥 参数
参数说明
s字符串
📤 返回值

字节长度(number)

💻 用法案例
print(string.len('hello'))     --> 5
print(string.len('木剑'))      --> 4 (GBK) / 6 (UTF-8)
string.lower (s)
📖 用途

把所有大写字母转小写(只影响 ASCII 字母)。

📥 参数
参数说明
s字符串
📤 返回值

新字符串

💻 用法案例
print(string.lower('Hello WORLD'))   --> hello world
string.match (s, pattern [, init])
📖 用途

在 s 中找第一个匹配 pattern 的部分,返回捕获的内容(与 find 返回位置不同)。找不到返回 nil。

📥 参数
参数说明
s目标字符串
pattern模式
init起始位置,默认 1
📤 返回值

捕获内容(无捕获组则整个匹配);找不到 nil

💻 用法案例
print(string.match('获得 1000 经验', '%d+'))     --> 1000
print(string.match('2026-09-20', '(%d+)-(%d+)')) --> 2026  09
string.rep (s, n)
📖 用途

把字符串 s 重复 n 次拼接。

📥 参数
参数说明
s字符串
n重复次数
📤 返回值

新字符串

💻 用法案例
print(string.rep('★', 5))   --> ★★★★★
print(string.rep('-', 20))  --> 分隔线
string.reverse (s)
📖 用途

把字符串按字节倒序。含中文(多字节)时会把字切碎,只适合纯 ASCII。

📥 参数
参数说明
s字符串
📤 返回值

新字符串

💻 用法案例
print(string.reverse('abc123'))   --> 321cba
string.sub (s, i [, j])
📖 用途

截取 s 从位置 i 到 j 的子串(含两端,闭区间)。i/j 可为负数(从尾部倒数,-1 是最后一个字符)。j 省略默认到末尾。

📥 参数
参数说明
s字符串
i起始位置(负数从尾数)
j结束位置,默认 -1
📤 返回值

子串

💻 用法案例
local s = 'hello world'
print(string.sub(s, 1, 5))    --> hello
print(string.sub(s, -5))      --> world
print(string.sub(s, 7, -1))   --> world
说明:996 注意:中文是 2~3 字节/字,按字节截取会把汉字劈成乱码。切含中文的串先用 utf8/GBK 工具库。
string.upper (s)
📖 用途

把所有小写字母转大写(只影响 ASCII 字母)。

📥 参数
参数说明
s字符串
📤 返回值

新字符串

💻 用法案例
print(string.upper('hello'))   --> HELLO
Lua 接口说明书 · 996引擎教学资料 · chuan2.cn · 共 136 个接口
📝 我的备注-
👤 学员中心 · 备注与学习进度