2014-10-29 58 views
2

我有一串由空格分隔的数字,我需要将它们存储在表中,但由于某种原因,负号不会被识别。带负号的数字的正确模式是什么?

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

模式"%w"是字母数字字符,其中不包括-,使用这个模式来代替:

"%-?%w+" 

或更好:

"%-?%d+" 

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

+0

'[ - %d] +'匹配'123-456' ... – lhf 2014-10-29 12:45:21

2

%w+不会尝试只加数字,所以试试%S+来获取所有“单词”,即所有的非零字符序列。

如果您只想匹配数字,请尝试%-?%d+。请注意模式中的可选减号。还要注意,你必须避开减号。

+0

你说得对,我根据你的建议改进了我的答案。 +1。 – 2014-10-29 14:46:44

相关问题