逃避红宝石中的斜线

时间:2016-07-13 16:28:55

标签: ruby

我试图从像这样的网址中转发正斜杠

"http://example.com/qb-xhtml-v1.xsd" => "http:\/\/example.com\/qb-xhtml-v1.xsd"

但是当我尝试使用gsub时,这就是我所得到的

"http://example.com/qb-xhtml-v1.xsd".gsub("/", '\/')
=> "http:\\/\\/example.com\\/qb-xhtml-v1.xsd"

我也试过

"http://example.com/qb-xhtml-v1.xsd".gsub("/", '/' => '\/')

"http://example.com/qb-xhtml-v1.xsd".gsub(/[\/]/, '\/')

具有相同的结果。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我相信你正在使用的互动红宝石外壳正在添加额外的反斜杠,而这些反斜杠实际上并不存在。

我在irb中尝试了您的代码并获得了相同的结果:

irb(main):005:0> "http://example.com/qb-xhtml-v1.xsd".gsub("/", '\/')
"http:\\/\\/example.com\\/qb-xhtml-v1.xsd"

但如果我使用puts(),它会正确打印:

irb(main):006:0> puts "http://example.com/qb-xhtml-v1.xsd".gsub('/', '\/')
http:\/\/example.com\/qb-xhtml-v1.xsd
=> nil

我怀疑ruby shell只是为了方便而逃避反斜杠,这引起了混乱。