我发现自己不得不将一大块Lua代码变成一个字符串,这样它就可以作为一个合适的Lua块运行。 编写这样的代码并不太难,但是它耗费时间并容易出现轻微的错误,导致开发时间和耐心的损失。
是否有任何工具/过滤器能够获取一段可运行的代码并将其转换为正确的字符串?
如果我没有正确解释自己(不是以英语为母语的人,我的道歉!),我想找到一个可以改变代码的工具
MyFunction("String!")
到
"MyFunction(\"String!\")"
在示例中这很简单,但在谈论几行代码时,它非常繁琐。
我使用Linux作为我的主要操作系统,也许有一些过滤工具可用?基于Lua的解决方案也很有趣,只是为了娱乐。
答案 0 :(得分:6)
您可以使用长字符串包装代码。无论您使用何种方法实现它,这都应该很简单:
myString = [==[
for i = 1, 10 do
print("Hello #"..i)
end
]==]
只要匹配,您可以在开始和结束括号之间包含任意数量的=
符号(包括无)。这样,您肯定会有一个“结束注释”符号,该符号不会出现在随附的源代码中。
答案 1 :(得分:2)
使用string.format("%q",s)
。
答案 2 :(得分:1)
IntelliJ做得很好。
答案 3 :(得分:1)
您可以执行类似的操作,但结果只能通过Lua编译器本身读取。
string.dump(function() print("Hello world") end)
运行此类代码,您可以执行此操作
loadstring(string.dump(function() print("Hello world") end))()
答案 4 :(得分:0)
这样的事情会起作用吗?
sed 's/"/\\"/g;' join_string | tr '\n' '\a' | sed 's/\a/\\n/g' | more