1. 程式人生 > >Lua 特定字元擷取字串

Lua 特定字元擷取字串

記錄下工作中用到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
這裡的分號和逗號我直接寫在了方法裡,你也可以用引數的形式傳入,這樣就比較靈活,當然特定字串也不限於分號和逗號……