Вставка Escape-персонажей - PullRequest
       5

Вставка Escape-персонажей

1 голос
/ 31 октября 2009

Я хочу заменить и вставить последовательности escape-символов с их значениями escape-символов, также принимая во внимание, что '\' обнуляет escape-символ.

Например

"This is a \n test. Here is a \\n which represents a newline"

Какой самый простой способ добиться этого в Ruby?

Ответы [ 2 ]

1 голос
/ 31 октября 2009

Я полагаю, вы решаете следующую проблему:

"\\n".gsub(/\\\\/, "\\").gsub(/\\n/, "\n") # => "n"
"\\n".gsub(/\\n/, "\n").gsub(/\\\\/, "\\") # => "\\\n"

String#gsub может принимать аргумент блока, который выполняет подстановку.

str.gsub(/\\(.)/) do |s|
  case $1
  when "n"
    "\n"
  when "t"
    "\t"
  else
    $1
  end
end

Таким образом, никакая специальная escape-последовательность не подставляется первой, и все работает как ожидалось.

0 голосов
/ 31 октября 2009

Вы хотите противоположность этому?

puts "This is a \n test. Here is a \\n which represents a newline"

=>

This is a
 test. Here is a \n which represents a newline
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...