如何删除字符串的一部分?

时间:2019-05-23 08:20:05

标签: ruby chef chef-recipe

我是Ruby的新手,目前正在尝试从http请求字符串中删除一部分。

请求: POST /test/userRegistration?id=1234&name=John&address=UK

是否可以使用"name=John&"slice或其他任何方法取出gsub? 输出应为POST /test/userRegistration?id=1234&address=UK

注意:“ name”参数的值每次都可以不同

谢谢

4 个答案:

答案 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将其转换为数组,然后rejectname=元素,然后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}"