Split
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
最后编辑:105493660 更新时间:2026-04-06 17:43