在Lua中,将计算字符串转换为整数

我试图将一个包含多个数字的字符串转换成一个整数。

像这样:

x="5+5"  --数字的数量并不是固定的
y=tonumber(x)
print(y)

这个结果是 nil,但实际上应该是 10(整数)。我能想到的唯一解决方法是先使用 string.find() 查找所有的 "+""-",然后切割成所有必要的部分,并从那里使用 tonumber()。为了解决这样一个简单的问题,我感觉自己写了至少一百行代码,这感觉很愚蠢。

点赞
用户1009479
用户1009479

tonumber 只能用于实数字符串而不是算术表达式。

您可以加载字符串并运行它:

x = "5 + 5"
func = assert(load("return " .. x))
y = func()
print(y)

在 Lua 5.1 中,使用 loadstring 代替 load

2014-01-16 08:12:14