\ 'означает $', что есть все после матча.
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