Как удалить часть строки? - PullRequest
1 голос
/ 23 мая 2019

Я новичок в Ruby, и в настоящее время я пытаюсь извлечь часть из строки запроса http.

Запрос: POST /test/userRegistration?id=1234&name=John&address=UK

Есть ли способ вынести "name=John&" используя slice, gsub или любым другим способом?Вывод должен быть POST /test/userRegistration?id=1234&address=UK

Примечание: значение параметра "имя" может каждый раз меняться

Спасибо

Ответы [ 4 ]

3 голосов
/ 23 мая 2019

Попробуйте это ...

str = "POST /test/userRegistration?id=1234&name=John&address=UK"
str = str.sub(/&name=.+&/, '&')
str
=> "POST /test/userRegistration?id=1234&address=UK"
0 голосов
/ 23 мая 2019

Это не короткий ответ, но, вероятно, самый надежный, поскольку он фактически анализирует URL

require 'uri'

# parse
request = "POST /test/userRegistration?id=1234&name=John&address=UK".split
uri = URI request[1]
query = URI.decode_www_form uri.query
# modify the query params
query.delete_if { |param| param[0] == "name" }
# convert back to string
uri.query = URI.encode_www_form query
new_request = "#{request[0]} #{uri}"
0 голосов
/ 23 мая 2019

Вы можете использовать split в строке, чтобы превратить ее в массив, затем reject элемент name=, затем join их в строку:

"POST /test/userRegistration?id=1234&name=John&address=UK".split('&').reject { |e| e.start_with?('name=') }.join('&')
=> "POST /test/userRegistration?id=1234&address=UK"

Здесь есть дополнительные возможности .

0 голосов
/ 23 мая 2019

Вы можете использовать Адресно .Это, вероятно, проще, чем написать какое-либо решение для модификации строки самостоятельно.

...