Menu
CoddyTech

使用 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
challenge icon

挑战

简单

编写一个名为 extractHashtags 的函数,它接收 text,并返回文本中找到的所有标签,每个标签单独占一行。

使用 string.gmatch() 在文本中查找所有标签。标签以 # 开头,后面跟一个或多个字母。

逻辑:

  • 使用 string.gmatch() 和模式 "#%a+" 查找所有标签
  • 遍历每个匹配项并收集它们
  • 用换行符(\n)连接所有标签
  • 如果没有找到标签,返回空字符串

参数:

  • text(字符串):要搜索标签的文本

返回值:找到的所有标签,每个标签单独占一行。如果没有标签,返回空字符串(字符串)

亲手试试

function extractHashtags(text)
    -- 在这里编写代码
end
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Lua 在线编译器