Split(String, delim, [index_or_ignore_empty], [ignore_empty]);


函数功能:

字符串分割函数。支持返回整个分割表,或直接获取指定索引的子串,并可选择是否忽略空子串。


操作参数:

参数名 是否必须 类型 说明
String string 要分割的字符串
delim string 分隔符(不能为空字符串)
index_or_ignore_empty number 或 boolean • 若为 数字:表示要获取的第几个子串(从1开始),此时函数直接返回该子串。• 若为 布尔:表示是否忽略空子串,此时函数返回整个分割表。
ignore_empty boolean 仅当第三个参数为数字时有效。true 表示忽略空子串(跳过连续分隔符产生的空串),false 或不传则不忽略。

返回值:

返回值类型 成功 失败
返回整个分割表(第三参数为布尔或未传) table nil
按索引取子串(第三参数为正整数) string(子串内容) nil(索引超出范围)

操作实例:

function print_table(t)
    if type(t) ~= "table" then

        return
    end
    local items = {}
    for i, v in ipairs(t) do
        items[i] = string.format("%q", v)
    end
     print("{" .. table.concat(items, ", ") .. "}")

end


    local t = String.Split("a,,b,c", ",")
    -- 输出: {"a", "", "b", "c"}

    -- 返回整个表,忽略空串
    local t2 = String.Split("a,,b,c", ",", true)
    -- 输出: {"a", "b", "c"}

    -- 取第 2 个子串(不忽略空串)
    local part = String.Split("a,,b,c", ",", 2)
    -- 输出: ""   (空字符串)

    -- 取第 2 个子串,忽略空串(此时第2个非空子串是 "b"local part2 = String.Split("a,,b,c", ",", 2, true)
    -- 输出: "b"

    -- 索引超出范围返回 nil
    local part3 = String.Split("a,b", ",", 5)
    -- 输出: nil

    -- 分隔符为多字符
    local t3 = String.Split("abXcdXef", "X")
    -- 输出: {"ab", "cd", "ef"}

    local part4 = String.Split("abXcdXef", "X", 2)
    -- 打印示例
    print_table(t)      --> {"a", "", "b", "c"}

备注:

分隔符 不能为空字符串,否则会抛出错误。

当第三个参数为布尔值时,该布尔值决定是否忽略空子串,且函数始终返回整个分割表。当第三个参数为布尔值时,该布尔值决定是否忽略空子串,且函数始终返回整个分割表。

当第三个参数为正整数 n 时,函数只返回第 n 个子串(不创建整个表,效率更高)。此时可通过第四个参数决定是否忽略空子串。当第三个参数为正整数 n 时,函数只返回第 n 个子串(不创建整个表,效率更高)。此时可通过第四个参数决定是否忽略空子串。

空子串的定义:连续两个分隔符之间或字符串开头/结尾与分隔符之间的空内容(例如 “a,,b” 按 “,” 分割,第二个子串为空)。空子串的定义:连续两个分隔符之间或字符串开头/结尾与分隔符之间的空内容(例如 “a,,b” 按 “,” 分割,第二个子串为空)。

  • 更多返回错误代码请看首页的错误代码描述
作者:105493660  创建时间:2026-04-06 17:31
最后编辑:105493660  更新时间:2026-04-06 17:43