如何解析像
这样的网址 http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007
并且只获得
http://www.1800contacts.com
PS。有些网址有子域名等,所以我不能在这里使用正则表达式。
答案 0 :(得分:22)
尝试使用' uri'库:
require 'uri'
address = 'http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007'
uri = URI.parse(address)
puts "#{uri.scheme}://#{uri.host}" # => http://www.1800contacts.com
答案 1 :(得分:1)
2种替代方式
uri = URI.parse(url); uri.path = ''; uri.query = nil; uri.to_s
url.split('/')[0,3].join('/')
答案 2 :(得分:1)
我喜欢@skojin的答案1(很抱歉,我打开了另一个答案,这只是一个很长的评论),因为它在两种情况下都提供了更通用的代码:
require 'uri'
uri = URI "http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007"
uri.query = uri.fragment = nil
uri.path = ""
uri.to_s
# => "http://www.1800contacts.com"
uri = URI "http://example.com:8080/you-found-me.php"
uri.query = uri.fragment = nil
uri.path = ""
uri.to_s
# => "http://example.com:8080"