我试图从像这样的网址中转发正斜杠
"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(/[\/]/, '\/')
具有相同的结果。有什么想法吗?
答案 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只是为了方便而逃避反斜杠,这引起了混乱。