打开/关闭菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:SplitStringToTable:修订间差异

来自骷髅女孩Wiki
无编辑摘要
 
第1行: 第1行:
local p = {} --p stands for package
local p = {}
 
-- 转义正则表达式中的特殊字符
--- Escape pattern for regex
-- 将s字符串中所有的非字母数字字符(%W)替换为其转义形式(前加%)
 
--- @param s string string to escape
--- @return string
local function escapePattern(s)
local function escapePattern(s)
return s:gsub("%W", "%%%1")
return s:gsub("%W", "%%%1")
end
end
 
-- 将字符串str按指定分隔符delimiter(默认为空白%s)分割为多个部分,并酌情修剪trim(默认false)每个分割部分前后的空白字符
--- Split string by delimiter and return the table of string parts
---
--- @param str string String to split
--- @param delimiter string Delimiter used to split the string, default to %s
--- @param trim bool Trim spaces from beginning and end of split strings
--- @return table
function p.splitStringIntoTable( str, delimiter, trim )
function p.splitStringIntoTable( str, delimiter, trim )
         if delimiter == nil then
         if delimiter == nil then
第20行: 第11行:
         end
         end
         local t = {}
         local t = {}
        -- 构建正则表达式模式pattern用于匹配分隔符间的字符串部分
        -- 使用gmatch函数按pattern遍历字符串,将每个匹配的部分插入
        -- 若trim为true,使用match函数去除每个部分的前后字符串
         local pattern = '[^' .. escapePattern( delimiter ) .. ']+'
         local pattern = '[^' .. escapePattern( delimiter ) .. ']+'
         for s in string.gmatch( str, pattern ) do
         for s in string.gmatch( str, pattern ) do
第26行: 第20行:
         return t
         return t
end
end
return p
return p

2025年1月11日 (六) 00:35的最新版本

此模块的文档可以在模块: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