ここで何が起こっているのかわかりません。文字列「Yaho\'o」を取得するには、gsubにどのようにフィードする必要がありますか?
>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
\'は$'を意味し、試合後のすべてです。もう一度\をエスケープすると、機能します
"Yaho'o".gsub("'", "\\\\'")
"Yaho'o".gsub("'", "\\\\'")
エスケープ文字をエスケープしているだけでなく、一重引用符もエスケープしているためです。
これもそれを行い、もう少し読みやすくなります:
def escape_single_quotes(str)
str.gsub(/'/) { |x| "\\#{x}" }
end
一重引用符と円記号の両方をエスケープして、その文字列を二重引用符で囲まれたルビー文字列に埋め込むことができるようにする場合は、次のようにします。
def escape_single_quotes_and_backslash(str)
str.gsub(/\\|'/) { |x| "\\#{x}" }
end