如何将字符串转换为表格?

我有这个字符串文本:

text = "hotkey=F4,value=,autoSend=false, hotkey=Shift+F9,value=,autoSend=false, hotkey=F5,value=,autoSend=false"

我想将它转换成以下这样的表格:

local table = {
    {hotkey='F4', value=nil, autoSend=false};
    {hotkey='Shift+F9', value=nil, autoSend=false};
    {hotkey='F5', value=nil, autoSend=false}
}
点赞
用户5525442
用户5525442

这个解决方案存在范围限制,不能覆盖输入字符串的所有复杂性。简单的模式匹配可以生成你正在寻找的表格,但使用此代码构建更好/更强大的正则表达式以适应你的字符串的多样性。

s = "hotkey=F4,value=,autoSend=false, hotkey=Shift+F9,value=,autoSend=false, hotkey=F5,value=,autoSend=false"
local words = {}
for w in s:gmatch("(hotkey=%g-,value=%g-,autoSend=%w*)") do
    -- 将字符串拆分成更易管理的部分
    -- 对于w = 'hotkey=F4,value=,autoSend=false, hotkey=Shift+F9',提取单个k,v对并根据需要插入到表中
    local _hotkey   = string.match(w,"hotkey=(%g-),")
    local _value    = string.match(w,"value=(%g-),")
    local _autoSend = string.match(w,"autoSend=(%w+)")
    table.insert(words,{hotkey=_hotkey, value=_value, autoSend=_autoSend})
end

for _, w in ipairs(words) do
    for k, v in pairs(w) do
        print(k .. ':' .. v)
    end
end

正则表达式解释

(): 捕获字符串

%g:除空格外的可打印字符

%w:字母数字字符

\*:0次或多次重复

-:0次或多次惰性重复

2018-09-22 03:09:06