使用 string.gmatch() 进行迭代
本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 39 课,共 54 课。
string.match() 会查找模式的首次出现。如果你需要查找字符串中的所有匹配项,该怎么办?string.gmatch() 函数会返回一个迭代器,你可以在 for 循环中使用它,逐个处理每个匹配项。
基本语法如下:
for match in string.gmatch(text, pattern) do
-- 处理每个匹配项
end下面是一个查找字符串中所有数字的示例:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- 输出:
-- 3
-- 5模式 %d+ 可以匹配一个或多个数字,循环会针对找到的每个数字运行一次。
你还可以从一个句子中提取所有单词:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- 输出:
-- Lua
-- is
-- a
-- powerful
-- language挑战
简单编写一个名为 extractHashtags 的函数,它接收 text,并返回文本中找到的所有标签,每个标签单独占一行。
使用 string.gmatch() 在文本中查找所有标签。标签以 # 开头,后面跟一个或多个字母。
逻辑:
- 使用
string.gmatch()和模式"#%a+"查找所有标签 - 遍历每个匹配项并收集它们
- 用换行符(
\n)连接所有标签 - 如果没有找到标签,返回空字符串
参数:
text(字符串):要搜索标签的文本
返回值:找到的所有标签,每个标签单独占一行。如果没有标签,返回空字符串(字符串)
亲手试试
function extractHashtags(text)
-- 在这里编写代码
end
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Lua 在线编译器