带反斜杠的string.gsub出错

时间:2011-02-14 15:58:50

标签: lua gsub

local a = "te\st"
local b = string.gsub(a,'\','\\\\')
assert(false,b)

我做错了什么?

当我执行assert时,我希望屏幕上显示字符串te\st ...但它不起作用

我有一个JSON文件,我想将其解码为Lua表。我不需要打印任何内容,我只是为了测试本地问题assert

所以我需要的是将所有数据保存在具有'\'

的JSON文件中

4 个答案:

答案 0 :(得分:3)

如果您不希望反斜杠具有特殊含义,请使用[[]]代替""''

阅读文字字符串in the manual

答案 1 :(得分:2)

您是否尝试使用%字符而不是\

转义它

我不知道这是否会有所帮助,但我有一段时间让Lua的gsub匹配我的字符串中的特殊字符,我希望从字面上对待......事实证明使用\作为转义字符,或者将字符加倍,我需要在特殊字符前加上%,以便对其进行字面处理。

答案 2 :(得分:0)

你的问题不太清楚,所以我不是100%肯定你的意思。你的意思是当b等于字符串“te \ st”时你想要断言吗?如果是这样,你可以做一个简单的事情:

assert(b ~= "te\st")

或者我赞成......

assert(b ~= a)

答案 3 :(得分:0)

您不需要gsub。但无论如何它在这里。

local a = "te\\st"
local b = string.gsub(a,'\\','\\')
assert(false,b)