如何在lua中用多个分隔符分割字符串?

问题描述:

我想将一个字符串拆分成由多个分隔符分隔的数组。如何在lua中用多个分隔符分割字符串?

local delim = {",", " ", "."} 
local s = "a, b c .d e , f 10, M10 , 20,5" 

结果表应该是这样的:

{"a", "b", "c", "d", "e", "f", "10", "M10", "20", "5"} 

分隔符可以是空格,逗号或点。 如果像空格和逗号这样的两个分隔符相互接连,则应该将它们折叠起来,应该忽略其他空格。

此代码根据需要通过构建分隔符集的补码模式来拆分字符串。

local delim = {",", " ", "."} 
local s = "a, b c .d e , f 10, M10 , 20,5" 
local p = "[^"..table.concat(delim).."]+" 
for w in s:gmatch(p) do 
     print(w) 
end 

修改代码以保存表中的“单词”。

+2

是否允许在用户定义的分隔符之间使用'''','''''和''''短划线''作为左括号? –

+1

我通常使用这个函数来避免这样的问题: 函数escape_magic(s) 本地MAGIC_CHARS_SET ='[()%%。[^ $%] * +% - ?]' if s == nil then return end 返回(s:gsub(MAGIC_CHARS_SET,'%%% 1')) 结束 – tonypdmtr

+0

@EgorSkriptunoff,好点。 – lhf