我必须向不确定的 URL 添加一个新参数,比如说param=value
.
如果实际的 URL 已经有这样的参数
http://url.com?p1=v1&p2=v2
我应该将 URL 转换为另一个:
http://url.com?p1=v1&p2=v2¶m=value
但是如果 URL 还没有任何参数,像这样:
http://url.com
我应该将 URL 转换为另一个:
http://url.com?param=value
我担心用正则表达式解决这个问题,因为我不确定寻找 的存在&
是否足够。我在想也许我应该将 URL 转换为URI对象,然后添加参数并将其再次转换为 String。
寻找已经处于这种情况的人的任何建议。
更新
为了帮助参与,我分享了一个基本的测试套件:
require "minitest"
require "minitest/autorun"
def add_param(url, param_name, param_value)
# the code here
"not implemented"
end
class AddParamTest < Minitest::Test
def test_add_param
assert_equal("http://url.com?param=value", add_param("http://url.com", "param", "value"))
assert_equal("http://url.com?p1=v1&p2=v2¶m=value", add_param("http://url.com?p1=v1&p2=v2", "param", "value"))
assert_equal("http://url.com?param=value#&tro&lo&lo", add_param("http://url.com#&tro&lo&lo", "param", "value"))
assert_equal("http://url.com?p1=v1&p2=v2¶m=value#&tro&lo&lo", add_param("http://url.com?p1=v1&p2=v2#&tro&lo&lo", "param", "value"))
end
end