我试图从用户输入解析一个URI.我假设一些用户不会将该方案放在他们的URI中,我想默认为“http”.
以下代码不起作用:
require 'uri' uri_to_check = URI::parse("www.google.com") uri_to_check.scheme = "http" unless uri_to_check.scheme puts uri_to_check.to_s
我希望看到“http://www.google.com”,但我得到“http:www.google.com”.甚至有可能这样做吗?
如果是这样,我还缺少什么?
有没有更好的方法来做到这一点?
解决方法
领先的斜杠(//)表示URL是基于IP的地址,需要标记主机名,以便URI可以正确解析它们.
维基百科有一些很好的概述和使用的例子:
http://en.wikipedia.org/wiki/Url,
http://en.wikipedia.org/wiki/URI_scheme,
http://en.wikipedia.org/wiki/URL_normalization
最好的信息是规范本身:http://www.ietf.org/rfc/rfc1738.txt特别是在3.1“3.1.通用互联网方案语法”.
您可能需要考虑使用可寻址的gem.它更智能,当我需要做很多URI解析或操作时,我使用的是什么.
http://addressable.rubyforge.org/和
http://addressable.rubyforge.org/api/Addressable/URI.html
原文地址:https://www.jb51.cc/ruby/267055.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。