我正在制作一个图形程序,并且需要将一行的功能打印到屏幕上。但是,如果数学函数在行的函数中(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)"
答案 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"))
如果您稍后添加模式,请记住避开百分号。