使用 string.gsub 进行转换
通过 gsub 使用字符串、函数或表查找结果替换模式。
使用 string.gsub 进行转换 是 CoddyKit 上的免费 Lua Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Lua Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Lua Academy 课程共包含 4 节课。
什么是 string.gsub?
string.gsub(s, pattern, repl, n) 会将 s 中出现的 pattern 替换为 repl。它返回新字符串和替换次数。
简单字符串替换
替换字面子字符串的所有出现位置。
local s = "hello world world"
local result, count = s:gsub("world", "Lua")
print(result, count) -- hello Lua Lua 2限制替换次数
传入第四个参数即可限制替换次数。
local s = "aaa bbb aaa"
print(s:gsub("aaa", "xxx", 1)) -- xxx bbb aaa 1基于模式的替换
将所有数字替换为固定字符串。
local s = "abc 123 def 456"
print(s:gsub("%d+", "NUM")) -- abc NUM def NUM 2使用函数进行替换
当 repl 是函数时,系统会将每个捕获内容(或完整匹配结果)传给它,并使用其返回值替换匹配结果。
local s = "price: 100, tax: 15"
local result = s:gsub("%d+", function(n)
return tostring(tonumber(n) * 1.1)
end)
print(result) -- price: 110.0, tax: 16.5使用表进行替换
当 repl 是表时,每个匹配结果(或捕获内容)都会用作键,表中的值将替换匹配结果。
local vars = {name="Alice", lang="Lua"}
local tmpl = "Hello, {name}! Welcome to {lang}."
local result = tmpl:gsub("{(%w+)}", vars)
print(result) -- Hello, Alice! Welcome to Lua.去除空白字符
使用 gsub 删除字符串开头和结尾的空白字符。
local function trim(s)
return s:gsub("^%s+", ""):gsub("%s+$", "")
end
print("[" .. trim(" hello ") .. "]") -- [hello]转换大小写
使用带函数的 gsub 将每个字母转换为大写或小写。
local function toUpper(s)
return s:gsub("%a", string.upper)
end
print(toUpper("hello world")) -- HELLO WORLD转义特殊字符
转义字符串中的所有模式特殊字符,使其可以用作字面模式。
local function escapePat(s)
return s:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
end使用返回计数
第二个返回值(替换次数)可用于检测是否发生了替换。
local s = "no numbers here"
local result, n = s:gsub("%d+", "X")
if n == 0 then print("nothing replaced") end模板引擎模式
一个简单的模板引擎会将 {{key}} 占位符替换为数据表中的值。
local function render(tmpl, data)
return (tmpl:gsub("{{(%w+)}}", data))
end
print(render("Hi {{name}}!", {name="Bob"})) -- Hi Bob!gsub 问题
当 gsub 中的 repl 是函数时,会向它传入什么?
回顾:string.gsub
string.gsub 是字符串转换的瑞士军刀:可以使用字符串、函数(用于动态计算)或表(用于字典查找)进行替换。它还会返回替换次数。
常见问题解答
「使用 string.gsub 进行转换」课时是免费的吗?
是的 — 「使用 string.gsub 进行转换」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Lua Academy 课程的其余内容,请升级到 CoddyKit PRO。 Lua Academy 课程共包含 4 节课。
「使用 string.gsub 进行转换」这节课中我会学到什么?
通过 gsub 使用字符串、函数或表查找结果替换模式。 你通过在浏览器中直接运行的动手代码来练习 Lua Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Lua Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Lua Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「使用 string.gsub 进行转换」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Lua Academy 课中编写并运行代码吗?
能。每节 Lua Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Lua 模式语法
- 捕获组和 string.match
- 使用 string.gmatch 进行分词
- 使用 string.gsub 进行转换