String url="http://someexample.com/?cid=cid123 &club_id=club123&s4c=10&dom=someexample.com&hash=testhash";
String[] params = url.split("&");
for (String param : params) {
String name = param.split("=")[0];
String value = param.split("=")[1];
System.out.println(name+":"+value);
}
显示输出
http://someexample.com/?cid:cid123
club_id:club123
s4c:10
dom:someexample.com
hash:testhash
但我也想得到cid,所以我尝试了以下
String delimeter1="?";
String delimeter2="&";
url=url.replace(delimeter1, delimeter2);
当我运行该程序时,它给了我以下错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
请告诉我这里我做错了什么?
答案 0 :(得分:0)
替换?使用&,URL的第一部分(http://someexample.com/
)也成为一个参数。使用=
拆分此符号只会返回1个部分,因为它不包含任何等号。然后,访问它[1]将失败。
如果它包含一个等号,我建议只拆分一个参数:
if (param.contains("=") { ... }
答案 1 :(得分:0)
我建议您更改url
字符串,并在String
之后仅获取?
的部分内容。
String url="http://someexample.com/?cid=cid123 &club_id=club123&s4c=10&dom=someexample.com&hash=testhash";
url = url.substring(url.indexOf('?')+1);
String[] params = url.split("&");
for (String param : params) {
String name = param.split("=")[0];
String value = param.split("=")[1];
System.out.println(name+":"+value);
}
答案 2 :(得分:0)
使用URL类来帮助解析。此外,在没有" cid"在查询中:
URL url = new URL("http://someexample.com/?"
+ "cid=cid123&club_id=club123&s4c=10&"
+ "dom=someexample.com&hash=testhash");
System.out.println(url.getQuery());
String[] params = url.getQuery().split("&");
for (String param : params) {
String[] pair = param.split("=");
if (pair.length == 2 && pair[0].equals("cid")) {
String value = pair[1];
System.out.printf("cid is %s", value);
}
}