将代码转换为字符串的工具?

我发现自己不得不将一块 Lua 代码转换成字符串,以便可以作为一个适当的 Lua 块运行。编写这样的代码并不太困难,但是费时且容易出现小错误,导致开发时间和耐心的浪费。

是否有任何工具/过滤器能够将可运行的代码转换成适当的字符串?

如果我没有解释清楚(母语不是英语,对此向您道歉!),我想找到一个将代码转换成适当字符串的工具,例如将代码

MyFunction("String!")

转换成

"MyFunction(\"String!\")"

这在示例中很简单,但是在谈论几行代码时,相当繁琐。

我使用 Linux 作为我的主要操作系统,也许有一些过滤器工具可用?以 Lua 为基础的解决方案也是有趣的。

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

点赞
stackoverflow用户382587
stackoverflow用户382587

会像这样的东西起作用吗?

sed 's/"/\\"/g;' join_string | tr '\n' '\a' | sed 's/\a/\\n/g' | more
2010-07-03 23:11:35
stackoverflow用户184730
stackoverflow用户184730
IntelliJ does it very well.

翻译:

IntelliJ 做得非常好。

2010-07-03 23:16:19
stackoverflow用户161424
stackoverflow用户161424

你可以用一长串字符串来包装代码。无论你采用何种方法来实现它,这都应该是很简单的:

myString = [==[
    for i = 1, 10 do
        print("Hello #"..i)
    end
]==]

你可以在开放和关闭括号之间使用任意数量的 = 符号(包括没有),只要它们匹配即可。通过这种方式,你可以确保在封闭的源代码中不会出现“结束注释”符号。

2010-07-03 23:19:38
stackoverflow用户107090
stackoverflow用户107090

使用 string.format("%q",s)

2010-07-03 23:49:28
stackoverflow用户394428
stackoverflow用户394428

你可以这样做,但是结果只能通过 Lua 编译器本身来阅读。

string.dump(function() print("Hello world") end)

运行这样的代码,你可以这样做:

loadstring(string.dump(function() print("Hello world") end))()
2010-07-17 02:25:08