Java 不使用正则表达式从查询字符串中删除一个参数

Java 不使用正则表达式从查询字符串中删除一个参数,java,spring,string,servlets,request,Java,Spring,String,Servlets,Request,所以我有一个网址是 String url = request.getRequestURL()+"?"+request.getQueryString(); 有一个参数Custom=“true”,我想在将其存储到url之前将其删除。 有没有什么有效的方法可以做到这一点,而不用使用正则表达式 Example - http://myhost:8080/people?lastname=Fox&age=30&Custom=true&verified=yes request

所以我有一个网址是

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

只需用空字符串替换
Custom=true

query = query.replace("Custom=true&",""); 

如果您想替换精确匹配,下面的代码将起作用

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;
        }
    }

以下是一个依赖于Java 8流式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和查询字符串最初是分开的这一事实(如问题中所述)实际上也有帮助。

请提供queryString
request.getQueryString()的示例值。replace(“Custom=true&”,”)
可能是?我猜您不理解这个问题,request.getQueryString()已经在?之后返回字符串了?。从lastname=Fox&age=30&Custom=true&verified=yes”的结果字符串中,我想删除Custom=trueIt将替换otherCustom=true&too参数是唯一的,因此这不会成为问题。如果“Custom”是查询字符串中的唯一参数,则此方法不起作用