2016-11-16 297 views
2

我想將一個字符串拆分成由多個分隔符分隔的數組。如何在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"} 

分隔符可以是空格,逗號或點。 如果像空格和逗號這樣的兩個分隔符相互接連,則應該將它們摺疊起來,應該忽略其他空格。

回答

2

此代碼根據需要通過構建分隔符集的補碼模式來拆分字符串。

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

相關問題