我想操纵一个URL来获取基本站点名称。
例如我有网址:
http://stackoverflow.com/questions/ask,
应该只返回stackoverflow
。
如果我有URL:
http://stackoverflow.com/questions/4988199/rails-3-mechanize-socketerror-getaddrinfo-host-or-name-not-known
它也应该只有stackoverflow
。
最后一个例子,如果我有URL:
http://www.google.dk/search?q=ruby+string+manipulation
应为google
。
如何删除除域名域名以外的所有内容?
答案 0 :(得分:8)
您可以使用std Ruby发行版中已有的东西:
irb(main):001:0> require "uri"
=> true
irb(main):002:0> a = URI.parse("http://www.google.com")
=> #<URI::HTTP:0x3b3eb78 URL:http://www.google.com>
irb(main):003:0> a.host
=> "www.google.com"
irb(main):004:0>
答案 1 :(得分:2)
最简单的解决方案可能就是使用Domainatrix gem来为您处理这个问题。安装完成后,只需执行此操作:
url = Domainatrix.parse("http://www.google.dk/search?q=ruby+string+manipulation")
url.domain # returns 'google'
github页面上还有一些代码示例和选项。
答案 2 :(得分:1)
如果您不想使用单独的gem,可以尝试一些简单的正则表达式
(https?:\/\/)?(www\.)?([^\.]+).*