Вопрос

Я не понимаю, что здесь происходит. Как я должен кормить GSUB, чтобы получить строку «Yaho »?

>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
Это было полезно?

Решение

'означает $', что все после матча. Избежать снова и работает

"Yaho'o".gsub("'", "\\\\'")

Другие советы

"Yaho'o".gsub("'", "\\\\'")

Потому что вы избегаете персонажа Escape, а также сбегая единую цитату.

Это также сделает это, и это немного более читаемо:

def escape_single_quotes(str)
  str.gsub(/'/) { |x| "\\#{x}" }
end

Если вы хотите избежать единой цитаты, так и обратной спины, чтобы вы могли встроить эту строку в двойную цитирующую Ruby String, то следующее сделает для вас:

def escape_single_quotes_and_backslash(str)
  str.gsub(/\\|'/) { |x| "\\#{x}" }
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top