有什么更好的方法可以做到这一点?
理想情况下使用某种URI解析类,而不是依赖于我自己的正则表达式
url = "http://example.com" //or "http://example.com?after=111"
next_url = url.gsub(/after=\d+/,"666")
if !next_url.eql?(url)
if (new2.include?('?') == false)
next_url = url + "?after=666"
else
next_url = url + "&after=666"
end
end
puts next_url
答案 0 :(得分:3)
我建议您在分开URL或将它们放在一起时使用Addressable gem。它非常全面,并且query_values(options = {})
和query_values=(new_query_values)
将所有查询组件提取到哈希中,或者从哈希重建它。它还将根据需要处理参数的解码和编码,URI不会为你做的事情。
答案 1 :(得分:0)
不确定你的问题,但你可能想要这样的东西?
path, query = url.split('?')
query = (query||'').scan(/(.+)=(.+)/).map{|k, v| "#{k}=#{k == 'after' ? 666 : v}"}.join('&')
puts [path, query].join('?')
答案 2 :(得分:0)
有一个名为URI
的Ruby库,用于处理URL的解析和构建。