有负号的数值应如何呈现,何种方式最合适?

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

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

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

点赞
用户1009479
用户1009479

该模式 "%w" 用于表示字母数字字符,但不包括 -,请使用以下模式代替:

"%-?%w+"

或更好的选择是:

"%-?%d+"

因为你只需要数字。

2014-10-29 10:23:22
用户107090
用户107090

%w+ 不仅仅匹配数字,所以尝试使用 %S+ 来匹配所有“单词”,即所有非零字符的序列。

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

2014-10-29 11:42:01