如何从给定url提取参数

在Java中,我有:

String params=“depCity=PAR&roomType=D&depCity=NYC”;

我想获得depCity参数(PAR,NYC)的值

所以我创建了正则表达式:

String regex=“depCity=([^&]+)”;
Pattern p=Pattern.compile(regex);
匹配器m=p.Matcher(参数);

m.find()返回falsem.groups()正在返回IllegalArgumentException

我做错了什么

它不必是正则表达式。因为我认为没有标准的方法来处理这件事,所以我使用的是我从某处复制的东西(可能有点修改):

公共静态地图<字符串,列表<字符串&gt&燃气轮机;getQueryParams(字符串url){
试一试{
Map<String,List<String>params=newhashmap<String,List<String>();
字符串[]urlParts=url.split(“\\?”);
如果(urlParts.length>1){
字符串查询=urlParts[1];
for(字符串参数:query.split(“&”){
字符串[]对=参数拆分(“”);
字符串key=urldecker.decode(对[0],“UTF-8”);
字符串值=”;
如果(对长>1){
value=urldecker.decode(对[1],“UTF-8”);
}
List<String>values=params.get(键);
如果(值==null){
values=newarraylist<String>();
参数put(键、值);
}
增加(价值);
}
}
返回参数;
}捕获(不支持DencodingException ex){
抛出新断言错误(ex);
}
}

因此,当您调用它时,您将获得所有参数及其值。该方法处理多值参数,因此使用List<字符串&gt而不是字符串,在本例中,您需要获取第一个列表元素

发表评论