【问题标题】:Java: How do I remove parameter from querystringJava:如何从查询字符串中删除参数
【发布时间】:2014-03-24 07:39:15
【问题描述】:

我想从我的 url 中删除一些查询字符串属性,我尝试了一些正则表达式,但没有得到确切的解决方案。请帮我摆脱它。 例如:

String qString = "category=Popular&code=14290115";
qString = qString .replaceAll("(?<=[?&;])code=.*?($|[&;])",""); 
output: category=Popular&

上面的正则表达式正在删除属性,但没有删除&amp; 符号。所以请给我建议。

【问题讨论】:

  • no... 我只想删除 case 参数。我想要这个:http://www.domain.com?id=1&amp;start=2&amp;end=5
  • 有什么问题?它工作正常。 See Demo here
  • 您为什么不直接拆分为查询元素,从没有您想要的元素的数组中构建一个列表并重构查询字符串?
  • 只有 case 是最后一个参数时才有问题。所以也许,在替换之后,你可以测试 qString 是否以 '&' 结尾并删除它。
  • 哦,对不起...我编辑了我的问题。我将这个id=1&amp;case=edit&amp;start=2&amp;end=5 用作query string

标签: java query-string


【解决方案1】:

不要为此使用正则表达式。这是一场彻头彻尾的噩梦,因为任何字符都可以进行百分比编码,例如?foo=bar?%66oo=%62ar 完全相同。解析 URL,然后是查询字符串,然后重建它。看看 Apache Commons HTTP Client 中的 URIBuilder 和 URLEncodedUtils。

【讨论】:

  • 好的,谢谢@David 的建议,我需要试试看。
  • 我正在使用URIBuilder,它真的很有帮助。谢谢@大卫
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 2014-09-06
  • 2010-12-10
  • 2021-05-05
  • 2018-04-20
相关资源
最近更新 更多