【发布时间】:2011-11-27 18:56:19
【问题描述】:
我怎样才能解析像这样的网址
http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007
只有得到
http://www.1800contacts.com
?
PS。有些网址有子域等,所以我不能在这里使用正则表达式。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3.1
我怎样才能解析像这样的网址
http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007
只有得到
http://www.1800contacts.com
?
PS。有些网址有子域等,所以我不能在这里使用正则表达式。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3.1
尝试使用“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
【讨论】:
address = 'http://example.com:8080/you-found-me.php',它会为您提供以下信息:uri.port # => 8080
2 种替代方式
uri = URI.parse(url); uri.path = ''; uri.query = nil; uri.to_s
url.split('/')[0,3].join('/')
【讨论】:
我喜欢@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"
【讨论】: