Java字符串拆分问题

时间:2014-11-12 16:25:49

标签: java arrays string

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

请告诉我这里我做错了什么?

3 个答案:

答案 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);
  }
}