将一个含有‘+’,‘-’、‘*’的字符串分解计算然后转换成整数,如果字符串不规则就返回0。例如‘112+58-98+65-147+83’结果为73;‘24-58-147+3’结果为-178;‘29+ab-87’结果为0。
时间: 2023-05-19 11:01:33 浏览: 135
以下是我为您提供的解决方案:
```lua
function calculate(str)
local sum = 0
local num = ""
local sign = 1
for i = 1, #str do
local c = str:sub(i, i)
if c == " " or c == "-" or c == "*" then
if num ~= "" then
sum = sum + sign * tonumber(num)
num = ""
sign = (c == "-") and -1 or 1
end
elseif c >= "0" and c <= "9" then
num = num .. c
else
return 0
end
end
if num ~= "" then
sum = sum + sign * tonumber(num)
end
return sum
end
```
您可以将上述代码保存为一个名为“calculate.lua”的文件,然后在您的 Lua 程序中使用它。
例如,您可以这样调用它:
```lua
dofile("calculate.lua")
print(calculate("112 58-98 65-147 83")) -- 输出 73
print(calculate("24-58-147 3")) -- 输出 -178
print(calculate("29 ab-87")) -- 输出 0
```
希望这可以帮助您解决问题!