Ошибка в string.gsub с обратной косой чертой - PullRequest
1 голос
/ 14 февраля 2011
local a = "te\st"
local b = string.gsub(a,'\','\\\\')
assert(false,b)

Что я делаю не так?

Когда я делаю assert, я хочу, чтобы на экран выводилась строка te\st ... но она не работает

У меня есть файл JSON, который я хочу декодировать в таблицу Lua. Мне не нужно ничего распечатывать, я сделал assert только для проверки локальной проблемы.

Итак, мне нужно сохранить все данные в файле JSON с '\'.

Ответы [ 4 ]

3 голосов
/ 14 февраля 2011

Используйте [[]] вместо "" или '', если вы не хотите, чтобы обратный слеш имел особое значение.

Читайте о буквальных строках в руководстве .

2 голосов
/ 14 декабря 2011

Вы пытались избежать его с символом % вместо \

Я не знаю, поможет ли это, но у меня был АД времени, когда Луа совпадал с gsubмоя строка со специальными символами, которую я хотел трактовать буквально ... оказалось, что вместо использования \ в качестве escape-символа или удвоения символа мне нужно было добавить префикс специального символа к %, чтобы сделать егоотноситься буквально.

0 голосов
/ 14 февраля 2011

Вам не нужен gsub.Но здесь все равно.

local a = "te\\st"
local b = string.gsub(a,'\\','\\')
assert(false,b)
0 голосов
/ 14 февраля 2011

Ваш вопрос не был слишком ясен, поэтому я не на 100% уверен, что вы имеете в виду. Вы имеете в виду, что хотите, чтобы assert сработал, когда b равно строке "te \ st"? Если это так, вы можете сделать простое:

assert(b ~= "te\st")

Или я полагаю ...

assert(b ~= a)
...