0Pricing
Lua Academy · 课时

使用 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Lua 模式语法
  2. 捕获组和 string.match
  3. 使用 string.gmatch 进行分词
  4. 使用 string.gsub 进行转换
← 返回 Lua Academy