You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua编写单次分割字符串函数时点号分隔符失效问题求解

问题原因
  • Lua 标准库的string.find()默认使用模式匹配规则,.是 Lua 模式中的通配符,代表匹配任意单个字符。因此你传入分隔符为.时,函数会匹配到字符串的第一个字符,返回起止位置1,1,最终导致分割结果异常。
修复方法

调用string.find()时开启纯文本匹配模式,具体是在方法参数中补充第三个参数为起始查找位置1,第四个参数为true(代表启用plain模式,不会解析分隔符里的模式特殊字符)。
同时可以补充边界判断逻辑,避免分隔符不存在时引发索引错误,修复后的代码如下:

function splitOnce(inputstr, sep)
    -- 1:从字符串第一个字符开始查找,true:启用纯文本匹配
    local s, e = inputstr:find(sep, 1, true)
    -- 处理分隔符不存在的场景
    if not s then
        return {inputstr, ""}
    end
    local t = {}
    table.insert(t, inputstr:sub(1, s - 1))
    table.insert(t, inputstr:sub(e + 1, -1))
    return t
end

用你示例的输入"STRING.STRING1.STRING2",分隔符为.测试,修复后的函数会正确匹配到第一个.的位置是第7位,分割结果第一个元素为STRING,第二个为STRING1.STRING2,符合预期。

内容的提问来源于stack exchange,提问作者allene50

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:05