2013-05-28 76 views
3

我想在我的新服務器修改中爲需要數字和字符串的Crysis Wars做出幾個chatcommands。爲了獲得玩家的輸入,我這樣做:字符串到數字轉換

local name, time, reason = string.match(chatMsg, "^!punish (.*) (%d+) (.*)"); 

由於某種原因,它不能正常工作(獲取數字值爲一個字符串)。數字值是string.match中的第二個變量。我在這裏做錯了什麼? 我也試圖找到這個解決方案,但沒有找到任何。也許我應該使用不同的方法來獲取數字?

+1

這可能行不通,因爲'tonumber'需要(最多)兩個參數,第二個必須是一個數字類型,而'string.match'返回與模式中的捕獲一樣多的* string *值;就像我在我的回答中所寫的,**添加**行。 – dualed

回答

6

其實很簡單,只需在您發佈的問題行後添加以下行。

time = tonumber(time); 

如在下面的評論中提到,你可以達到同樣的用

time = time + 0 
+0

如果您對十進制字符串進行算術運算,則Lua *會自動轉換*。例如「42」+「5」'給出(數字)47. – finnw

+0

哎喲,我站好了。它似乎確實如此。那麼答案仍然正確,因爲這會將字符串值轉換爲數字*咳嗽* – dualed

+0

同意@finnw:'time = time + 0'會做同樣的轉換;-) –