从 url 字符串中删除特定参数的最佳方法是什么?
What's the best way to get rid of specific parameter from url string?
我有 URL 个字符串,例如:
"http://www.xyz/path?param1=value1¶m2=value2¶m3=value3".
我只需要删除 param2 参数,所以结果应该是:
"http://www.xyz/path?param1=value1¶m3=value3".
我是这样做的:
private String removeParameter(String url, String key) {
String newParams = "";
String[] urlArray = url.split("\?");
String[] params = urlArray[1].split("&");
for (String param: params) {
if (param.contains(key))
continue;
else {
if (newParams != "")
newParams = newParams.concat("&");
newParams = newParams.concat(param);
}
}
return urlArray[0].concat("?").concat(newParams);
}
System.out.println("Modified URL: " + removeParameter("http://www.xyz/path?param1=value1¶m2=value2¶m3=value3", "param2"));
有没有更好的方法来做到这一点?
你可以使用这个:
String url = "http://www.xyz/path?param1=value1¶m2=value2¶m3=value3";
String r = url.replaceFirst( "param2=[^&]*(&|$)", "" );
编辑(在 Alex 发表评论后):
更改上面的模式以包含最后出现的参数。此外,如果在那种情况下需要删除最后一个尾随 &
,您可以使用它来代替上面的第二行。
String r = url.replaceAll( "param2=[^&]*(&|$)", "" ).replaceFirst( "&$", "" );
第一个模式是这样的:
- 它首先搜索已知的参数名称,
param2
在这种情况下
- 然后进一步匹配直到下一个
&
或字符串的结尾
- 用空字符串替换匹配的区域
第二个模式搜索字符串末尾的任何 &
并替换为空字符串。
注意我使用了String.replaceFirst( String, String )
。因此,如果您认为该参数可能会在查询字符串中重复,您可能希望使用 String.replaceAll( String, String )
代替。
我有 URL 个字符串,例如:
"http://www.xyz/path?param1=value1¶m2=value2¶m3=value3".
我只需要删除 param2 参数,所以结果应该是:
"http://www.xyz/path?param1=value1¶m3=value3".
我是这样做的:
private String removeParameter(String url, String key) {
String newParams = "";
String[] urlArray = url.split("\?");
String[] params = urlArray[1].split("&");
for (String param: params) {
if (param.contains(key))
continue;
else {
if (newParams != "")
newParams = newParams.concat("&");
newParams = newParams.concat(param);
}
}
return urlArray[0].concat("?").concat(newParams);
}
System.out.println("Modified URL: " + removeParameter("http://www.xyz/path?param1=value1¶m2=value2¶m3=value3", "param2"));
有没有更好的方法来做到这一点?
你可以使用这个:
String url = "http://www.xyz/path?param1=value1¶m2=value2¶m3=value3";
String r = url.replaceFirst( "param2=[^&]*(&|$)", "" );
编辑(在 Alex 发表评论后):
更改上面的模式以包含最后出现的参数。此外,如果在那种情况下需要删除最后一个尾随 &
,您可以使用它来代替上面的第二行。
String r = url.replaceAll( "param2=[^&]*(&|$)", "" ).replaceFirst( "&$", "" );
第一个模式是这样的:
- 它首先搜索已知的参数名称,
param2
在这种情况下 - 然后进一步匹配直到下一个
&
或字符串的结尾 - 用空字符串替换匹配的区域
第二个模式搜索字符串末尾的任何 &
并替换为空字符串。
注意我使用了String.replaceFirst( String, String )
。因此,如果您认为该参数可能会在查询字符串中重复,您可能希望使用 String.replaceAll( String, String )
代替。