如何在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
修改代码以保存表中的“单词”。
是否允许在用户定义的分隔符之间使用'''','''''和''''短划线''作为左括号? –
我通常使用这个函数来避免这样的问题: 函数escape_magic(s) 本地MAGIC_CHARS_SET ='[()%%。[^ $%] * +% - ?]' if s == nil then return end 返回(s:gsub(MAGIC_CHARS_SET,'%%% 1')) 结束 – tonypdmtr
@EgorSkriptunoff,好点。 – lhf