我如何解析url第一个月只会得到http://www.1800contacts.com?有些网址有子域等,所以我不能在这里使用正则表达式。
http://www.1800contacts.com
ie3xauqp1#
尝试使用“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
ccrfmcuu2#
我喜欢@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"
2hh7jdfx3#
2种替代方法
uri = URI.parse(url); uri.path = ''; uri.query = nil; uri.to_s url.split('/')[0,3].join('/')
bjg7j2ky4#
url = 'http://www.1800contacts.com/productlist.aspx?dl=P&source=cj&ac=8.2.0007' Addressable::URI.heuristic_parse(url).origin => 'http://www.1800contacts.com'
4条答案
按热度按时间ie3xauqp1#
尝试使用“uri”库:
ccrfmcuu2#
我喜欢@skojin的答案1(抱歉我打开了另一个答案,这只是一个很长的注解),因为它为这两种情况提供了更通用的代码:
2hh7jdfx3#
2种替代方法
bjg7j2ky4#