Подтвердить что ты не робот

Ruby gsub не избегает одиночных кавычек

Я не понимаю, что здесь происходит. Как мне передать gsub для получения строки "Yaho\o"?

>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
4b9b3361

Ответ 1

\ 'означает $', что есть все после матча. Escape the\again и работает

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

Ответ 2

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

Потому что вы избегаете escape-символа, а также избегаете одиночной кавычки.

Ответ 3

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

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

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

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