记录下工作中用到Lua的一个简单功能需求:
如下字符串:"aa,bb;cc,dd;ee,ff;gg,hh;"
转成:{"aa" = bb, "cc" == dd, "ee" == ff, "gg" == hh}表形式。
function combination(sourcestr)
if not sourcestr or sourcestr == "" then
print("特定字符串转成指定表出错!")
return
end
local outsplitchar = ";"
local innersplit = ","
local function inner_get_table_from_split_string(src, splitchar)
local splitlist = {}
string.gsub(src, '[^' .. splitchar ..']+', function(value) table.insert(splitlist, value) end)
return splitlist
end
local out_tbl = inner_get_table_from_split_string(sourcestr, outsplitchar)
local tmp={}
for _, value in pairs(out_tbl) do
local tmp_tbl = inner_get_table_from_split_string(value, innersplit)
local inner_tbl = {}
inner_tbl["" .. tmp_tbl[1]] = tonumber(tmp_tbl[2])
tmp[#tmp + 1] = inner_tbl
end
local final_tbl = {}
for k, v in pairs(tmp) do
final_tbl[table.keys(v)[1]] = table.values(v)[1]
end
return final_tbl
end
这里的分号和逗号我直接写在了方法里,你也可以用参数的形式传入,这样就比较灵活,当然特定字符串也不限于分号和逗号……