所以我有一个
String url = request.getRequestURL()+"?"+request.getQueryString();
有一个参数Custom =“ true”,我想在将其存储在url中之前删除该参数。 有什么有效的方法可以执行此操作,而无需使用正则表达式。
Example -
http://myhost:8080/people?lastname=Fox&age=30&Custom=true&verified=yes
request.getQueryString(); // "lastname=Fox&age=30&Custom=true&verified=yes"
Desired o/p - lastname=Fox&age=30&verified=yes
答案 0 :(得分:1)
只需用空字符串替换Custom=true
query = query.replace("Custom=true&","");
答案 1 :(得分:1)
如果您要替换完全匹配项,则下面的代码将起作用。
String url = "http://myhost:8080/people?lastname=Fox&age=30&Custom=true&verified=yes";
String newUrl = "";
String[] splits = url.split("&");
for(String split : splits) {
if(!"Custom=true".equals(split)) {
newUrl = newUrl+"&"+split;
}
}
答案 2 :(得分:0)
这是一个依赖于 Java 8 Streaming API 的解决方案:
StringBuffer requestUrl = request.getRequestURL();
String queryString = request.getQueryString();
String[] queryStringParts = queryString.split("&");
String newQueryString = Stream.of(queryStringParts)
.filter(p -> !p.equals("Custom=true"))
.collect(Collectors.joining("&"));
String newUrl = StringUtils.hasText(newQueryString) ?
requestUrl.append("?").append(newQueryString).toString() :
requestUrl.toString();
此外,请求 url 和查询字符串最初是分开的(如问题中所述)实际上也有帮助。