我想制作名为 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
这里有什么问题? 请你告诉我一些方法吗?
答案 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模块也可能更好。