协助使用Lua函数。

如前所述,我对 Lua 相对较新,但我学得很快。上次在这里得到帮助时,它对我有很大帮助,我能够编写更好的脚本。现在我来到了另一个问题,我认为它会让我的生活变得更轻松。我不知道该如何使用函数,但我希望能找到一种方法来实现我想要做的事情。在下面,您将看到一个示例代码,我需要对其做些处理以剥离掉一些不必要的元素。是的,我意识到它并不高效,因此如果有人有更好的想法让它更高效,我会静听。我想创建一个包含此代码的函数,以便我可以轻松地调用任何变量(例如,stripdown(winds))。我感激提供任何帮助和教训的人。谢谢!

原文链接 https://stackoverflow.com/questions/2596890

点赞
stackoverflow用户68204
stackoverflow用户68204

将它转化为函数是容易的部分。

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,"&nbsp;","")
    winds = string.gsub(winds,"/ ", "(")
    return winds
end

这个函数的编写确实会产生并且会抛弃很多中间字符串结果,这可能是一种比较昂贵的操作。值得注意的是要仔细研究 string.gsub() 的文档以及其 模式语言。它应该可以用更少的操作来完成你所需要的任务。

2010-04-08 02:14:05
stackoverflow用户41661
stackoverflow用户41661

对于这样的函数,我非常喜欢使用对象语法:

function stripdown(winds)
    winds = winds:gsub("%b<>","")
                 :gsub("%c"," ")
                 :gsub("  "," ")
                 :gsub("  "," ")
                 :gsub("^%s*(.-)%s*$", "%1)")
                 :gsub("&nbsp;","")
                 :gsub("/ ", "(")
    return winds
end

这个版本与其他版本相比,效率并没有更高或更低,但是代码中的语法噪声更少,我发现更容易理解。

有一个技术上的原因,不仅仅是返回大表达式,这是因为 gsub 返回两个结果。 将它赋值给 winds "调整"了(不想要的)第二个结果,并且函数仅返回字符串。

2010-04-08 02:20:35
stackoverflow用户282536
stackoverflow用户282536

这应该稍微好一些:

function stripdown(str)
    return (str:gsub("%b<>", "")
               :gsub("[%c ]+", " ")
               :gsub("^%s*(.-)%s*$", "%1")
               :gsub("&nbsp;", "")
               :gsub("/ ", "("))
end

将 3 个模式缩减为一个; 在返回表达式周围加上括号,可以将输出减少到 gsub 的第一个返回值。

2010-04-10 06:55:19