2

我在这里不知所措,尽管我对 Lua 中的 gsub 越来越熟悉。可能有更好的方法可以更有效地做到这一点,这就是我正在寻找的。我想做的是改变:

\(port Planes)9e;\(enter pool)n2euw

进入

port Planes;run 9e;enter pool;run n2euw

看起来这将是一件简单的事情,但我完全是空白。我可能将其部分归因于筋疲力尽,但这并不是一个真正的借口。我想要的方式是:

string.gsub(variable, ";","\(")
string.gsub(variable, "\(", ";")
string.gsub(variable, ")",";run")
string.gsub(variable, ";;",";")

但对我来说,这看起来很草率,而且没有我想要的那么高效。如果“)”结束该行,它也会提出问题,它会放“;” 那里,这不是我想要的。我会感谢更熟悉 Lua 的人的专业知识,他们可以整理并提高效率。一旦一切都说完了,我会把它放到一个函数中。谢谢!

编辑:经过测试,它甚至都不起作用,无论如何......我无法找出正确的模式匹配序列来让它工作......

4

1 回答 1

2

在不了解您可能拥有的可能组合的更多信息的情况下,我不能说这在每种情况下都有效,但它应该是一个开始:

string.gsub(variable,"\\%((.-)%)","%1;run ")
string.gsub(variable,";run $","")

第一个 gsub 返回括号内的命令,删除括号并在末尾添加 ';run '。

第二个是检查字符串的结尾是否为 ';run ',如果是则替换它。

您还应该查看这篇文章以获得关于模式的精彩总结: http ://www.lua.org/pil/20.2.html

于 2011-10-10T03:52:02.460 回答