我正在和Lua一起试图制作一个使用字符串操作的计算器。基本上我从字符串中取出两个数字,然后对它们做一些事情(+ - * /)。我可以成功地从x
中取出一个数字,但从y
中取出一个数字始终会返回nil
。有人可以帮忙吗?
local x = "5 * 75"
function calculate(s)
local x, y =
tonumber(s:sub(1, string.find(s," ")-1)),
tonumber(s:sub(string.find(s," ")+3), string.len(s))
return x * y
end
print(calculate(x))
答案 0 :(得分:3)
你有一个简单的错位括号,将string.len发送到tonumber而不是sub。
local x, y =
tonumber(s:sub(1, string.find(s," ")-1)),
tonumber(s:sub(string.find(s," ")+3, string.len(s)))
你实际上并不需要string.len,因为如果没有给出,则字符串的结尾是sub的默认值。
编辑: 实际上,你可以通过使用string.match来做你想做的事情。
local x,y = string.match(s,"(%d+).-(%d+)")
匹配查找尝试将字符串与给定的模式匹配,并返回捕获的值,在本例中为数字。此模式转换为"一个或多个数字,然后尽可能少的任何字符,然后一个或多个数字"。 %d是1位数,+表示一个或多个。 。意味着任何性格和 - 意味着尽可能少。将捕获括号内的值,这意味着它们将被返回。