使用string.gsub查找多个模式

时间:2014-09-21 17:36:12

标签: string lua gsub

我正在制作一个图形程序,并且需要将一行的功能打印到屏幕上。但是,如果数学函数在行的函数中(ex :)

function(x) return math.atan(x) end

然后我想删除数学。'部分。我还想删除函数中的任何空格,以及我将来可能会想到的其他模式。这就是我目前所拥有的(当然简化)

local func = "math.atan( x )"
print(func:gsub("[math%. ]", "")) --look for math. or a space
--OUTPUT: n(x)

我意识到我不需要括号之间的空格,但那些仅用于测试目的。我希望输出能说出#34; atan(x)"

1 个答案:

答案 0 :(得分:1)

最简单的方法就是将一堆gsub调用链接在一起。在这种情况下,您可以使用

local func = "math.atan( x )"
print(func:gsub("math", ""):gsub("%s", "")) --> atan(x)

如果你真的想要,你可以写一个简写方法来隐藏gsub链接:

local function chainremove(source, ...)
    for index, value in ipairs({...}) do
        source = source:gsub(value, "")
    end

    return source
end

这可以使你的概念成为未来可以想到的其他模式"作为表面上的单个方法调用:

local func = "math.atan( x )"
print(chainremove(func, "math", "%s"))

如果您稍后添加模式,请记住避开百分号。