我只是在玩弄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))
发布于 2014-03-19 20:30:47
你有一个简单的放错地方的圆括号,把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+)")
Match查找并尝试将字符串与给定的模式进行匹配,并返回捕获的值,在本例中为数字。此模式转换为“一个或多个数字,然后尽可能少的任何字符,然后一个或多个数字”。%d是1位数字,+表示一个或多个数字。。表示任意字符,-表示尽可能少的字符。括号中的值被捕获,这意味着它们将被返回。
https://stackoverflow.com/questions/22516961
复制相似问题