String 字符串到数字的转换

String 字符串到数字的转换,string,lua,numbers,String,Lua,Numbers,我正在尝试在我的新服务器修改中为需要数字和字符串的Crysis Wars生成几个命令。要获取播放器输入,我执行以下操作: local name, time, reason = string.match(chatMsg, "^!punish (.*) (%d+) (.*)"); 由于某些原因,它不能正常工作(以字符串形式获取数值)。数值是string.match中的第二个变量。我做错什么了吗? 我也试图找到一个解决办法,但没有找到任何。也许我应该使用另一种方法来获取数字?这其实很简单,只需在您在

我正在尝试在我的新服务器修改中为需要数字和字符串的Crysis Wars生成几个命令。要获取播放器输入,我执行以下操作:

local name, time, reason = string.match(chatMsg, "^!punish (.*) (%d+) (.*)");
由于某些原因,它不能正常工作(以字符串形式获取数值)。数值是string.match中的第二个变量。我做错什么了吗?
我也试图找到一个解决办法,但没有找到任何。也许我应该使用另一种方法来获取数字?

这其实很简单,只需在您在问题中发布的行之后添加以下行即可

time = tonumber(time);
如下面的评论所述,您可以通过

time = time + 0

这无法工作,因为
tonumber
需要(最多)两个参数,第二个参数必须是数字类型,而
string.match
返回模式中捕获的字符串值;就像我在回答中写的那样,添加行。如果对十进制字符串进行算术运算,Lua会自动转换。e、 g.
“42”+“5”
给出(数字)47.哎哟,我被纠正了。看来是的。答案仍然是正确的,因为这将把字符串值转换成一个与@finnw一致的数字:
time=time+0
将进行相同的转换;-)@EgorSkriptunoff有一个区别:
“a”+0
导致错误,而
tonumber(“a”)
只返回
nil