2013-05-28 42 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'会做同样的转换;-) –