Вставка новых строк (\ n) в аргументы замены gsub - PullRequest
0 голосов
/ 06 июня 2018

Я попытался вставить новые строки в шаблон замены gsub.Это работает, если замена - строковый литерал в двойных кавычках, такой как "text\ntext", но не если замена - переменная.Это может быть связано с тем, как я ссылаюсь на мои замещающие строки.

Если я делаю:

replace = "\n// some text"
text.gsub!(/#{find}/, replace)

, это работает просто отлично.

Но когда замещающая строка содержит\n записывается в файл,

\n// some text

читается через File.open и сохраняется в виде строки, затем замены:

text.gsub!(/#{find}/, "#{replace}")
text.gsub!(/#{find}/, replace)

вставка литералов \n символов.

1 Ответ

0 голосов
/ 06 июня 2018

\n - код перехода для новой строки.\ escape only работают в литеральных строках, включенных в исходные файлы Ruby.При чтении из внешних источников \n - это просто буквенные символы \ и n.

Простое исправление, если вы хотите иметь возможность указывать символы новой строки, используя \n во входном файле., это добавить

replace = replace.gsub('\n', "\n")

Перед использованием replace.Это заменяет буквальные \n в replace фактическими символами новой строки.

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