在string.gsub中使用反斜杠出现错误。

我做错了什么?

当我执行 assert 时,我希望在屏幕上打印出字符串 te\st,但实际上并没有成功。

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

所以我需要保留所有包含 '\' 的 JSON 文件中的数据。

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

点赞
stackoverflow用户407757
stackoverflow用户407757

你的问题不是太清楚,所以我不确定你的意思。你是想当 b 等于字符串“te\st”时,使 assert 触发吗?如果是,请使用简单的:

assert(b ~= "te\st")

或者我猜...

assert(b ~= a)
2011-02-14 16:30:56
stackoverflow用户6236
stackoverflow用户6236

如果您不希望反斜杠具有特殊含义,请使用 [[]]而不是“”''

在手册中阅读有关字面字符串的详细信息(http://www.lua.org/manual/5.1/manual.html#2.1)。

2011-02-14 16:36:49
stackoverflow用户151501
stackoverflow用户151501

你不需要 gsub。但是这里还是有的。

local a = "te\\st"
local b = string.gsub(a,'\\','\\')
assert(false,b)
2011-02-14 16:46:35
stackoverflow用户123837
stackoverflow用户123837

你尝试过使用 % 字符来转义,而不是使用 \ 吗?

我不知道这是否有帮助,但我一直在使用 Lua 的 gsub 处理带有特殊字符的字符串时遇到了问题,我想要将这些特殊字符视为字面量,但是\和重复字符都没有生效。实际上,我需要在特殊字符前加上 % 来将它们视为字面量。

2011-12-14 17:58:13