一种修改ruby中链接URL的方法

时间:2014-08-18 15:51:53

标签: ruby

我想制作名为 url_change 的方法。以便在删除(#)后返回任何内容的url。 例如:

url_change('www.localhost.com#about')
# returns 'www.localhost.com'

以前,我这样做了,但效果不好。

def url_change(url)
  if url.include? '#'
    url.slice!(/#./)
    return url
  else
    return url
  end
end

还有,

def url_change(url)
    url.split("#")
end

这里有什么问题? 请你告诉我一些方法吗?

2 个答案:

答案 0 :(得分:3)

您应该使用预先存在的工具:

require 'uri'

def url_change(url)
  uri = URI.parse(url)
  uri.fragment = nil
  uri.to_s
end

url_change('http://www.example.com#1') # => "http://www.example.com"

无论URL是否包含方案,它都有效:

url_change('www.example.com#1') # => "www.example.com"

URI是Ruby标准库的一部分,经过了充分测试。

答案 1 :(得分:0)

def url_change(url)
  url.split('#', 2).first
end

您应该为该方法提供更具描述性的名称,例如remove_fragment。正如其他人所建议的那样,在stdlib中使用URI模块也可能更好。