我是Ruby的新手,目前正在尝试从http请求字符串中删除一部分。
请求:
POST /test/userRegistration?id=1234&name=John&address=UK
是否可以使用"name=John&"
,slice
或其他任何方法取出gsub
?
输出应为POST /test/userRegistration?id=1234&address=UK
注意:“ name”参数的值每次都可以不同
谢谢
答案 0 :(得分:3)
尝试一下...
str = "POST /test/userRegistration?id=1234&name=John&address=UK"
str = str.sub(/&name=.+&/, '&')
str
=> "POST /test/userRegistration?id=1234&address=UK"
答案 1 :(得分:0)
您可以使用Addressable。这可能比自己编写一些字符串修改解决方案容易。
答案 2 :(得分:0)
您可以在字符串上使用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"
here还有其他可能性。
答案 3 :(得分:0)
这不是简短的答案,但它可能是最健壮的,因为它实际上解析了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}"