模式匹配-空格之间带减号

我有一个变量message,是从用户输入中获取的。例如:

!word number 字-字---字

!word 字字-字

目前,我创建了一个表格,并填充了每一个单词/数字(没有像-这样的数字)

--输入表
it = {}
--将输入放入表中
for _input in string.gmatch((message), '%w+') do
    it[#it+1] = {input = _input}
end

首先,我无法将带有减号的单词添加到表中。 另外,我无法检查it [2] .input是否为空。这是检查表的示例:

--测试开始
if it [1] .input =='test' then
    --做某事
end
--测试结束

我尝试过这个,但没有任何有效的结果。

点赞
用户4261756
用户4261756

注释:%s表示空格字符,%-表示转义的特殊字符。

message = "!word number word-word---word"

-- 这种方法可能不是填充数组的最理想方法...
it = {(function()
        local t = {}
        for _input in string.gmatch(message, "[^%s%-]+") do
            t[#t+1] = {input = _input}
        end
        return unpack(t)
    end)()}

print(t[2].input) --> number

it = {}
for _input in string.gmatch(message, "[^%s%-]+") do
    it[#it+1] = {input = _input}
end

-- 现在检查值应该可以正常工作
if (it[2] and it[2].input == "number") then -- 检查it[2]是否被设置为某个值,然后比较input
   print("t[2].input = \"number\"");
end
2015-07-19 14:46:41