如何检查是否有URL包含一个或多个参数?
例如,如果网址为
.../PaymentGatewayManager?mode=5015
然后我们应该能够知道URL包含一个参数。或者如果URL是
.../PaymentGatewayManager
然后我们应该能够知道URL不包含任何参数。或者如果URL是
.../PaymentGatewayManager?mode=5015&test=456123&abc=78
然后我们应该能够知道URL包含三个参数,我们也应该能够使用Java中的任何正则表达式来了解参数名称和值。
答案 0 :(得分:5)
如果你想用正则表达式做(这也可以优化以在组内进行搜索):
public static void main(String[] args) {
String input = ".../PaymentGatewayManager?mode=5015&test=456123&test2=SomeRandomValue&abc=78";
if(input.contains("?")){
System.out.println("It does contain parameters");
input = "&" + input.substring(input.indexOf("?")+1) + "&";
System.out.println(input);
Pattern p = Pattern.compile("&?(\\w.+?)=(.+?)&");
Matcher m = p.matcher(input);
while(m.find()){
System.out.println("Token ->" + m.group(1));
System.out.println("Value ->" + m.group(2));
}
}
}
答案 1 :(得分:3)
使用java.net.URI的方法获取有关网址的所有信息。
编辑:使用URI,而不是网址(感谢McDowell)。
答案 2 :(得分:2)
您可以使用String.split()
作为分割符,java.util.StringTokenizer
使用?
对其进行标记,或使用&
对其进行标记。如果您获得多个部分,则确保该URL包含参数。
要获取参数,请以相同方式将第二部分拆分为=
。你会得到参数。按{{1}}拆分每一个将为您提供名称和值。