如何在Rails / Ruby中操作URL?

时间:2011-04-24 11:54:44

标签: ruby-on-rails ruby

我想操纵一个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

如何删除除域名域名以外的所有内容?

3 个答案:

答案 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\.)?([^\.]+).*