Учитывая URL-адрес, как я могу получить только домен?

Указанные URL-адреса, например:

http://online.wsj.com/
http://online.wsj.com/article/SB10001424052970204409004577158764211274708.html
http://www.techcrunch.com/2012/01/13/techcrunch-coo/

Использование Ruby/Rails, как я могу вернуть обратно только домен?

online.wsj.com
online.wsj.com
techcrunch.com

Нет протокола, нет слэшей, только субдомен, если он не www, а домен и ext?

Ответ 1

Использовать Addressable:: URI.parse и метод экземпляра #host:

Addressable::URI.parse("http://techcrunch.com/foo/bar").host #=> "techcrunch.com" 

Ответ 2

Помните, что если у вас есть url без http://, это возвращает nil:

require 'uri'

url = "www.techcrunch.com/2012/01/13/techcrunch-coo/"

p URI.parse(url).host  # nil

Итак, что-то вроде этого должно быть более безопасным решением:

require 'uri'

url = "www.techcrunch.com/2012/01/13/techcrunch-coo/"

url = 'http://' + url unless url.match(/^http:\/\//)

puts URI.parse(url).host

Ответ 3

pry(main)> require 'uri'
pry(main)> url = "http://www.techcrunch.com/2012/01/13/techcrunch-coo?param1=foo&param2=bar"
pry(main)> URI.parse(url).host
=> "www.techcrunch.com"

Ответ 4

>> require 'uri'
>> URI.parse("http://www.techcrunch.com/2012/01/13/techcrunch-coo/").host
=> "www.techcrunch.com"