2014-10-29 62 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

相關問題