在红宝石中转义正斜杠

  • 本文关键字:转义 红宝石 ruby
  • 更新时间 :
  • 英文 :


我正在尝试从这样的 URL 中转义正斜杠

"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(/[/]/, '/')

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

我相信

你正在使用的交互式Ruby shell正在添加额外的反斜杠,而这些反斜杠实际上并不存在。

我在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

我怀疑红宝石外壳只是为了方便而转义反斜杠,这引起了混乱。

最新更新