Ruby / & в строке - PullRequest
       20

Ruby / & в строке

0 голосов
/ 25 октября 2018

Мне нужно включить / & в строку ZPL, чтобы разбить длинную строку на метке.

Есть сообщение stackoverflow , которое предлагает множество методов, но не кажетсячтобы ответить на мой вопрос:

Вот моя проблема:

>>"asdf & asdf".gsub("&", "\\\\&")
=>"asdf \\& asdf"

Да, если я поставлю строку, она вернет то, что я хочу:

>>puts "asdf & asdf".gsub("&", "\\\\&")
=>asdf \& asdf

Но янужна фактическая строка, равная asdf \& asdf

Я пытался проверить:

>>"asdf & asdf".gsub("&", "\\\\&").inspect
=>"\"asdf \\\\& asdf\""

>>"asdf & asdf".gsub("&", "\&").inspect
=>"\"asdf & asdf\""

Но это также не возвращает то, что мне нужно.Может быть, мне не хватает какой-то комбинации, которая возвращает \ & в строке?

Спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Когда вы видите, что Ruby показывает что-то вроде:

"asdf \\& asdf"

Это разбито на токены \\ (обратный слеш) и & (амперсанд), где первый обратный слеш является особенным, второй - этофактический характер.Вы можете прочитать это как " literal backslash".

При печати вы видите фактическую строку.Это правильно.

Внутренне двойные обратные слеши на самом деле отсутствуют, это просто следствие того, как должны обрабатываться строки в двойных кавычках.

Это необходимо для того, чтобы \n и \r и другие управляющие символы работают, но вы также можете использовать фактическую обратную косую черту.Существует большая разница между \n (перевод строки) и \\n ( литерал буква обратной косой черты n).

Это часто встречается при работе с форматами данных, которые имеют специальные символы.Например, в формататорах стиля printf значение % имеет значение, поэтому для печати фактического % вам нужно удвоить его:

'%.1f%%' % 10.3
#=> "10.3%"

Каждый формат будет иметь свои особенности и проблемы.HTML не рассматривает обратную косую черту как особую, но он делает < и > и &, поэтому вместо амперсанда вы увидите &amp;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...