Lua:转义字符串和写入文件

Lua:转义字符串和写入文件,lua,Lua,我创建函数writefile: function writefile(output,msgid) file = io.open(output, "a") if (file) then file:write('msgid "' .. msgid .. '"') file:close() else print("can't open file") end

我创建函数writefile:

 function writefile(output,msgid)       
    file = io.open(output, "a")
    if (file) then                  
        file:write('msgid "' .. msgid .. '"')       
        file:close()
    else
        print("can't open file")
    end
end
参数为:

output = output.txt
msgid =  "We can overcome anything!"
我想输出的文件是
msgid“\”我们可以克服任何困难\“”

我不想要
msgid=”“我们可以克服任何事情!“”


我怎样才能解决这个问题

如果您的目的是根据Lua的转义规则转义字符串,那么您应该使用:

试试这个

file:write('msgid "\\"' .. msgid .. '"\\"')

我在这里做的是用\来逃避另一个。我们不能直接把它放在那里,因为在Lua中它是一个转义字符。

如果你需要在值中转义引号(顺便说一句,你在
msgid的值中没有任何引号),那么你就可以使用它了。好的,这是可行的。谢天谢地,@EtanReisner:不要发表评论作为回答。@EtanReisner:不,这是回答;只是不太好。留下答案评论比留下低质量的答案更糟糕。通过这样做,您可以解决用户的问题,但将问题留在“未回答”队列中,即使它有答案。这是不好的,尤其是对于低可见性标签。@NicolBolas关于未回答的部分,你是对的。我仍然不喜欢标记VLQ或提供VLQ答案的想法,但我肯定会在将来更仔细地考虑VLQ答案评论。谢谢。
msgid
让我想到了gettext,所以我不确定lua引用规则在这里是否完全正确(尽管它们可能非常接近,但我不确定除了原始OP中的双引号外,还有什么需要转义)。您可以始终转义转义字符。所以Lua字符串中的“\\”变成了一个``字符。@NicolBolas是一个``字符?这应该是一个\,但似乎你不能将它们放入代码格式中。@NicolBolas哦,真奇怪。另外,谢谢,我没有意识到\\工作了。@Nicolas使用了3个背景符号:
\
file:write('msgid "\\"' .. msgid .. '"\\"')