```lua
local str = "4#5000#291&10244#2#370"
-- 第一步:用#分割字符串
local parts = {}
for part in string.gmatch(str, "([^#]+)") do
table.insert(parts, part)
end
-- 第二步:处理包含&的部分(第三个元素)
if parts[3] then
local subParts = {}
for subPart in string.gmatch(parts[3], "([^&]+)") do
table.insert(subParts, subPart)
end
-- 将291和10244分别作为第三个和第四个元素
parts[3] = subParts[1] or ""
table.insert(parts, 4, subParts[2] or "")
end
-- 第三步:输出结果
for i = 1, 4 do
if parts[i] then
SL:print(i .. " = " .. parts[i])
end
end
```
**代码说明:**
1. **string.gmatch()** - Lua标准字符串函数,用于模式匹配迭代
2. **`[^#]+`** - 正则模式,匹配所有非#字符
3. **`[^&]+`** - 正则模式,匹配所有非&字符
4. **table.insert()** - Lua标准表插入函数
**执行结果:**
```
1 = 4
2 = 5000
3 = 291
4 = 10244
```
注意:原字符串中的"2#370"部分被忽略了,因为按照你的要求只需要前4个值。如果需要获取所有值,可以调整循环逻辑。