gpt4 book ai didi

java - 如何从查询字符串中删除查询参数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:19 26 4
gpt4 key购买 nike

我正在使用 UriBuilder从 URI 中删除参数:

public static URI removeParameterFromURI(URI uri, String param) {
UriBuilder uriBuilder = UriBuilder.fromUri(uri);
return uriBuilder.replaceQueryParam(param, "").build();
}

public static String removeParameterFromURIString(String uriString, String param) {
try {
URI uri = removeParameterFromURI(new URI(uriString), param);
return uri.toString();
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}

上面的工作和修改:

http://a.b.c/d/e/f?foo=1&bar=2&zar=3

……进入:

http://a.b.c/d/e/f?bar=&foo=1&zar=3

但它存在以下问题:

  1. 它打乱了参数的顺序。我知道订单不相关,但它仍然困扰着我。
  2. 它并没有完全删除参数,只是将其值设置为空字符串。我希望参数完全从查询字符串中删除。

是否有一些标准或常用的库可以巧妙地实现上述目标,而无需自己解析和破解查询字符串?

最佳答案

在 Android 中,无需导入任何库。我受此答案启发编写了一个 util 方法Replace query parameters in Uri.Builder in Android?( Replace query parameters in Uri.Builder in Android? )

希望能帮到你。代码如下:

public static Uri removeUriParameter(Uri uri, String key) {
final Set<String> params = uri.getQueryParameterNames();
final Uri.Builder newUri = uri.buildUpon().clearQuery();
for (String param : params) {
if (!param.equals(key)) {
newUri.appendQueryParameter(param, uri.getQueryParameter(param));
}
}
return newUri.build();
}

关于java - 如何从查询字符串中删除查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41063948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com