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

我究竟做错了什么?

当我这样做时assert,我希望将字符串te\st打印到屏幕上......但它不起作用

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

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

4

4 回答 4

3

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

阅读手册中的文字字符串。

于 2011-02-14T16:36:49.300 回答
2

您是否尝试过用%角色而不是\

我不知道这是否会有所帮助,但我有一段时间让 Luagsub将我的字符串与我想要按字面意思对待的特殊字符匹配……结果证明不是\用作转义字符,或者将字符加倍,我需要在特殊字符前面加上前缀%以使其按字面意思对待。

于 2011-12-14T17:58:13.590 回答
0

你的问题不太清楚,所以我不是 100% 确定你的意思。您的意思是当 b 等于字符串“te\st”时,您希望触发断言?如果是这样,你可以做一个简单的:

assert(b ~= "te\st")

或者我想...

assert(b ~= a)
于 2011-02-14T16:30:56.143 回答
0

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

local a = "te\\st"
local b = string.gsub(a,'\\','\\')
assert(false,b)
于 2011-02-14T16:46:35.843 回答