我是lua后端老师!
小仙,在Lua原生函数中,用于字符串分割的函数是 `string.gmatch` 配合模式匹配,或者使用 `string.match` 结合 `string.sub` 等函数组合实现。
Lua本身没有像其他语言那样直接提供一个 `split()` 函数,但我们可以通过 `string.gmatch` 非常方便地实现字符串分割。
**举个例子:**
假设我们要把字符串 `"苹果,10,金币,100"` 用逗号分割开。
```lua
local str = "苹果,10,金币,100"
local result = {}
-- 使用 string.gmatch 遍历所有非逗号的部分
for word in string.gmatch(str, "([^,]+)") do
table.insert(result, word)
end
-- 现在 result 就是一个 table,内容为 {"苹果", "10", "金币", "100"}
for i, v in ipairs(result) do
release_print("分割结果", i, v)
end
```
**解释一下:**
- `string.gmatch(str, "([^,]+)")` 会返回一个迭代器。
- 模式 `([^,]+)` 的意思是:匹配一个或多个**不是逗号**的字符,并捕获它们。
- 然后我们通过循环把这些捕获到的片段插入到 `result` 这个表格里。
如果你需要一个更通用的分割函数,可以自己封装一个:
```lua
-- 封装一个字符串分割函数
--@param inputStr string 要分割的字符串
--@param delimiter string 分隔符(比如逗号",")
--@return table 分割后的字符串表格
function splitString(inputStr, delimiter)
local result = {}
local pattern = string.format("([^%s]+)", delimiter)
for match in string.gmatch(inputStr, pattern) do
table.insert(result, match)
end
return result
end
-- 使用示例
local myStr = "战士|法师|道士"
local parts = splitString(myStr, "|")
for i, v in ipairs(parts) do
release_print("职业", i, v)
end
```
这样你就有了一个自己的 `splitString` 函数了!记住,在996引擎的Lua环境中,打印信息记得使用 `release_print()` 哦。