Ruby Gsub не избегает однозначных цитат
Вопрос
Я не понимаю, что здесь происходит. Как я должен кормить 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
Не связан с StackOverflow