Lua查找字符串中的操作数

我有一个Lua字符串,例如"382+323"或"32x291"或"94-23",我该如何检查并返回操作数的位置?

我发现String.find(s, "[+x-]")不能正常工作。你有什么想法吗?

th> str = '5+3'
th> string.find(str, '[+-x]')
1   1
th> string.find(str, '[+x-]')
2   2
点赞
用户6090844
用户6090844
print("输入一个算术表达式,例如 382 x 3 / 15")
expr = io.read()
i = -1
while i do
    # 从上一个操作符的位置开始查找下一个操作符。
    # + 和 - 是特殊字符,所以需要使用 % 转义它们。
    # [find 函数返回 s 中匹配项的起始位置和结束位置][1]。
    # 这里我们只获取起始位置。
    i = expr:find("[%+x%-/]", i+1)
    if i then
        print("操作符", expr:sub(i, i), "在位置", i)
    end
end

注释:由于Lua中没有单行注释,因此将注释改为了Python中的单行注释。

2016-08-15 08:43:36
用户2646184
用户2646184

\[+-x\] 是一个匹配在 "+" 和 "x" 之间的一个字符的模式。当你想要使用连字符作为字符而不是元字符时,你应该在字符组的开头或结尾使用它。

2016-08-15 08:50:16