Мне нужно добавить новый параметр к неопределенному 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
Я чувствую беспокойство, чтобы решить это с помощью Regex, потому что я не уверен, что поискать &
может быть достаточно. Я думаю, что, возможно, мне нужно преобразовать URL-адрес в объект URI, а затем добавить параметр и снова преобразовать его в String.
Ищите любые предложения от кого-то, кто уже был в этой ситуации.
Update
Чтобы помочь с участием, я делюсь базовым набором тестов:
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