如前所述,我对lua相对较新,但同样,我学得很快。我最后一次在这里得到了帮助,这对我帮助很大,而且我能写出更好的剧本。现在我来到另一个问题,我认为这将使我的生活更轻松一些。我不知道我在做什么功能,但我希望有办法做我想做的事情。下面,您将看到我要删除一些不需要的元素的代码示例。是的,我意识到它至少没有效率,所以如果其他人对如何使它更有效率有更好的了解,我会全神贯注。我想做的是用它创建一个函数,这样我就可以通过简单的调用来删除任何变量(比如stripdown(winds))。我感谢所提供的任何帮助,以及任何课程。谢谢!
winds = string.gsub(winds,"%b<>","")
winds = string.gsub(winds,"%c"," ")
winds = string.gsub(winds," "," ")
winds = string.gsub(winds," "," ")
winds = string.gsub(winds,"^%s*(.-)%s*$", "%1)")
winds = string.gsub(winds," ","")
winds = string.gsub(winds,"/ ", "(")
约什
答案 0 :(得分:4)
这应该稍好一些:
function stripdown(str)
return (str:gsub("%b<>","")
:gsub("[%c ]+"," ")
:gsub("^%s*(.-)%s*$", "%1)")
:gsub(" ","")
:gsub("/ ", "("))
end
将3个模式减少到1个; 返回表达式周围的括号将输出减少到仅来自gsub的第一个返回值。
答案 1 :(得分:3)
对于这样的函数,我是对象语法的忠实粉丝:
function stripdown(winds)
winds = winds:gsub("%b<>","")
:gsub("%c"," ")
:gsub(" "," ")
:gsub(" "," ")
:gsub("^%s*(.-)%s*$", "%1)")
:gsub(" ","")
:gsub("/ ", "(")
return winds
end
这个版本的效率没有或低于其他版本,但是语法噪音要少得多,我发现更容易看到发生了什么。
没有简单地返回大表达式的技术原因,那是因为gsub
返回两个结果。
将其分配给winds
“调整”远离(不需要的)第二个结果,该函数仅返回字符串。
答案 2 :(得分:2)
将它变成一个函数是很容易的部分。
function stripdown(winds)
winds = string.gsub(winds,"%b<>","")
winds = string.gsub(winds,"%c"," ")
winds = string.gsub(winds," "," ")
winds = string.gsub(winds," "," ")
winds = string.gsub(winds,"^%s*(.-)%s*$", "%1)")
winds = string.gsub(winds," ","")
winds = string.gsub(winds,"/ ", "(")
return winds
end
这个函数写入会产生并放弃很多中间字符串结果,这可能是一个相对昂贵的操作。几乎可以肯定值得仔细研究string.gsub()及其pattern language的文档。应该可以在较少的操作中至少完成您指定的一些内容。