Ответ 1
\ 'означает $', что есть все после матча. Escape the\again и работает
"Yaho'o".gsub("'", "\\\\'")
Я не понимаю, что здесь происходит. Как мне передать gsub для получения строки "Yaho\o"?
>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
\ 'означает $', что есть все после матча. Escape the\again и работает
"Yaho'o".gsub("'", "\\\\'")
"Yaho'o".gsub("'", "\\\\'")
Потому что вы избегаете escape-символа, а также избегаете одиночной кавычки.
Это также сделает это, и это немного более читаемо:
def escape_single_quotes(str)
str.gsub(/'/) { |x| "\\#{x}" }
end
Если вы хотите избежать как одиночной кавычки, так и обратной косой черты, чтобы вы могли вставлять эту строку в строку с двойными кавычками ruby, то для вас это сделает следующее:
def escape_single_quotes_and_backslash(str)
str.gsub(/\\|'/) { |x| "\\#{x}" }
end