在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
我做错了什么
它不必是正则表达式。因为我认为没有标准的方法来处理这件事,所以我使用的是我从某处复制的东西(可能有点修改):
公共静态地图<;字符串,列表<;字符串>&燃气轮机;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<;字符串>而不是字符串,在本例中,您需要获取第一个列表元素