更多操作
创建页面,内容为“local p = {} --p stands for package --- Escape pattern for regex --- @param s string string to escape --- @return string local function escapePattern(s) return s:gsub("%W", "%%%1") end --- 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 tabl…” |
小无编辑摘要 |
||
(未显示同一用户的1个中间版本) | |||
第1行: | 第1行: | ||
local p = {} | local p = {} | ||
-- 转义正则表达式中的特殊字符 | |||
-- 将s字符串中所有的非字母数字字符(%W)替换为其转义形式(前加%) | |||
-- | |||
-- | |||
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)每个分割部分前后的空白字符 | |||
-- | |||
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