2

我只是在玩 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))
4

1 回答 1

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+)")

Match 查找尝试将字符串与给定模式匹配并返回捕获的值,在本例中为数字。此模式转换为“一个或多个数字,然后尽可能少的任何字符,然后是一个或多个数字”。%d 为 1 位,+ 表示一位或多位。. 表示任何字符,- 表示尽可能少。括号内的值被捕获,这意味着它们被返回。

于 2014-03-19T20:30:46.623 回答