Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用string.gsub最有效地将x更改为y(Lua)_Lua_Gsub - Fatal编程技术网

使用string.gsub最有效地将x更改为y(Lua)

使用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

虽然我对Lua的gsub越来越熟悉了,但我在这里还是不知所措。也许有更好的方法可以更有效地完成这项工作,这就是我所寻找的。我希望做的是改变:

\(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 $","")