使用string.gsub最有效地将x更改为y(Lua)
虽然我对Lua的gsub越来越熟悉了,但我在这里还是不知所措。也许有更好的方法可以更有效地完成这项工作,这就是我所寻找的。我希望做的是改变:使用string.gsub最有效地将x更改为y(Lua),lua,gsub,Lua,Gsub,虽然我对Lua的gsub越来越熟悉了,但我在这里还是不知所措。也许有更好的方法可以更有效地完成这项工作,这就是我所寻找的。我希望做的是改变: \(port Planes)9e;\(enter pool)n2euw 进入 这似乎是一件简单的事情,但我完全是一片空白。我可能会把这部分归因于精疲力竭,但这并不是一个真正的借口。我的想法是: string.gsub(variable, ";","\(") string.gsub(variable, "\(", ";") string.gsub(vari
\(port Planes)9e;\(enter pool)n2euw
进入
这似乎是一件简单的事情,但我完全是一片空白。我可能会把这部分归因于精疲力竭,但这并不是一个真正的借口。我的想法是:
string.gsub(variable, ";","\(")
string.gsub(variable, "\(", ";")
string.gsub(variable, ")",";run")
string.gsub(variable, ";;",";")
但对我来说,这看起来很草率,也不像我希望的那样高效。如果“)”结束了这一行,它就会把“;”放在那里,这不是我想要的。我会感谢更熟悉Lua的人的专业知识,他可以整理这件事,使之更有效率。我会把它放进一个函数,一旦一切都说了,做了。谢谢
编辑:经过测试,它甚至不工作,无论如何。。。我无法找出正确的模式匹配序列来让它工作…如果不了解更多关于可能的组合的信息,我不能说这在每种情况下都能工作,但它应该有一个开始:
string.gsub(variable,"\\%((.-)%)","%1;run ")
string.gsub(variable,";run $","")
第一个gsub返回括号内的命令,删除括号并添加';跑到最后
第二个是检查字符串的结尾是否为';运行并更换它(如果是这样的话)
您还应该查看这篇文章,以获得关于模式的一个很好的总结:
有什么原因让“效率”成为一个问题吗?我想更快的代码编译。另外,它使将来更容易查看,因此我不会在以后查看它时说‘我到底在这里尝试了什么?’我期待的最终结果只是一种更整洁的方式;因为我还在学习Lua,所以它也会帮助我将来的项目。别忘了字符串是不可变的,所以你需要真正记住每次调用
string.gsub的结果:variable=string.gsub(variable,;;;,;)
。只要我确信变量
始终是一个字符串
,我也会保存一些键入内容,并将其写成变量=variable:gsub(“;”,“;”)
。这使事情变得更加整洁。我真的是一片空白,我感谢你的回答!
string.gsub(variable,"\\%((.-)%)","%1;run ")
string.gsub(variable,";run $","")