此模块的文档可以在模块:SplitStringToTable/doc创建
local p = {}
-- 转义正则表达式中的特殊字符
-- 将s字符串中所有的非字母数字字符(%W)替换为其转义形式(前加%)
local function escapePattern(s)
return s:gsub("%W", "%%%1")
end
-- 将字符串str按指定分隔符delimiter(默认为空白%s)分割为多个部分,并酌情修剪trim(默认false)每个分割部分前后的空白字符
function p.splitStringIntoTable( str, delimiter, trim )
if delimiter == nil then
delimiter = "%s"
end
local t = {}
-- 构建正则表达式模式pattern用于匹配分隔符间的字符串部分
-- 使用gmatch函数按pattern遍历字符串,将每个匹配的部分插入
-- 若trim为true,使用match函数去除每个部分的前后字符串
local pattern = '[^' .. escapePattern( delimiter ) .. ']+'
for s in string.gmatch( str, pattern ) do
table.insert( t, trim and s:match("^%s*(.-)%s*$") or s )
end
return t
end
return p