28

ここで何が起こっているのかわかりません。文字列「Yaho\'o」を取得するには、gsubにどのようにフィードする必要がありますか?

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

3 に答える 3

35

\'は$'を意味し、試合後のすべてです。もう一度\をエスケープすると、機能します

"Yaho'o".gsub("'", "\\\\'")
于 2010-02-01T21:58:21.223 に答える
2
"Yaho'o".gsub("'", "\\\\'")

エスケープ文字をエスケープしているだけでなく、一重引用符もエスケープしているためです。

于 2010-02-01T21:53:40.827 に答える
1

これもそれを行い、もう少し読みやすくなります:

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

一重引用符と円記号の両方をエスケープして、その文字列を二重引用符で囲まれたルビー文字列に埋め込むことができるようにする場合は、次のようにします。

def escape_single_quotes_and_backslash(str)
  str.gsub(/\\|'/) { |x| "\\#{x}" }
end
于 2015-12-10T20:40:41.337 に答える