如何更改ruby中url参数的值?

时间:2011-03-09 23:05:25

标签: ruby

有什么更好的方法可以做到这一点?

理想情况下使用某种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    

3 个答案:

答案 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的解析和构建。