首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从字符串中取出两个数字时出错

从字符串中取出两个数字时出错
EN

Stack Overflow用户
提问于 2014-03-19 20:07:30
回答 1查看 47关注 0票数 2

我只是在玩弄Lua,试图制作一个使用字符串操作的计算器。基本上,我从一个字符串中取出两个数字,然后对它们做一些操作(+ -* /)。我可以成功地从x中取出一个数字,但是从y中取出一个数字总是返回nil。有人能帮上忙吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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))
EN

回答 1

Stack Overflow用户

发布于 2014-03-19 20:30:47

你有一个简单的放错地方的圆括号,把string.len发送给tonumber而不是sub.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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来做你想做的事情,时间要短得多。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
local x,y = string.match(s,"(%d+).-(%d+)")

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22516961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文