具有负符号的数字的正确模式是什么?

时间:2014-10-29 10:21:25

标签: string lua lua-patterns

我有一串用空格分隔的数字,我需要将它们存储在一个表中,但由于某些原因,负符号无法识别。

cord = "-53 2 -21"
map = {}
for num in cord:gmatch("%w+") do 
    table.insert(map, num) 
end
map[1], map[2], map[3] = tonumber(map[1]), tonumber(map[2]), tonumber(map[3])
print(map[1])
print(map[2])
print(map[3])

这是我得到的输出:

53
2
21

我认为问题在于我正在使用的模式,我应该改变什么?

2 个答案:

答案 0 :(得分:2)

模式"%w"用于包含-的字母数字字符,请改用此模式:

"%-?%w+"

或更好:

"%-?%d+"

因为数字就是你所需要的。

答案 1 :(得分:2)

%w+不会尝试仅使用数字,因此请尝试%S+获取所有“单词”,即所有非零字符序列。

如果您只想匹配数字,请尝试%-?%d+。注意模式中的可选减号。另请注意,您必须转义减号。