Как разделить по специальному символу "\" в Lua? - PullRequest
0 голосов
/ 03 ноября 2018

Я пытался разделить на "\", но этот символ настолько особенный в Lua, даже если я использую escape-символ "%", в среде IDE появляется ошибка Unterminated String constant

local index = string.find("lua. is \wonderful", "%\", 1)

1 Ответ

0 голосов
/ 03 ноября 2018

Чтобы вставить обратную косую черту \ в строку в кавычках, экранируйте ее с собой: "\\". \ - это символ экранирования в обычных строках в кавычках, поэтому он экранируется с помощью \. Или вы можете использовать синтаксис длинной строки, который не допускает escape-последовательности, как уже указывалось: [[\]].

Процент является только escape-символом в строке, которая используется как шаблон , поэтому он используется перед магическими символами ^$()%.[]*+-? во втором аргументе string.find, string.match, string.gmatch, string.gsub и %% представляют % в третьем аргументе string.gsub.

Процент все еще находится в строке, которая хранится в памяти, но escape-последовательности обратной косой черты заменяются соответствующим символом. \\ становится \, когда строка сохраняется в памяти, и если вы подсчитываете количество обратных косых черт в строке "\\", используя string.gsub, он найдет только одну: select(2, string.gsub("\\", "\\", "")) возвращает 1.

...