如何从给定的URL中提取参数 [英] How to extract parameters from a given url

查看:124
本文介绍了如何从给定的URL中提取参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Java中我有:

String params = "depCity=PAR&roomType=D&depCity=NYC";

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

I want to get values of depCity parameters (PAR,NYC).

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

So I created regex:

String regex = "depCity=([^&]+)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(params);

m.find()返回false 。 m.groups()返回 IllegalArgumentException

m.find() is returning false. m.groups() is returning IllegalArgumentException.

我做错了什么?

推荐答案

它不一定是正则表达式。因为我认为没有标准的方法来处理这个问题,我使用的是我从某个地方复制过的东西(也许还有一些修改过):

It doesn't have to be regex. Since I think there's no standard method to handle this thing, I'm using something that I copied from somewhere (and perhaps modified a bit):

public static Map<String, List<String>> getQueryParams(String url) {
    try {
        Map<String, List<String>> params = new HashMap<String, List<String>>();
        String[] urlParts = url.split("\\?");
        if (urlParts.length > 1) {
            String query = urlParts[1];
            for (String param : query.split("&")) {
                String[] pair = param.split("=");
                String key = URLDecoder.decode(pair[0], "UTF-8");
                String value = "";
                if (pair.length > 1) {
                    value = URLDecoder.decode(pair[1], "UTF-8");
                }

                List<String> values = params.get(key);
                if (values == null) {
                    values = new ArrayList<String>();
                    params.put(key, values);
                }
                values.add(value);
            }
        }

        return params;
    } catch (UnsupportedEncodingException ex) {
        throw new AssertionError(ex);
    }
}

所以,当你打电话给你时,你会得到所有参数及其值。该方法处理多值params,因此 List< String> 而不是 String ,在你的情况下,你'我需要得到第一个列表元素。

So, when you call it, you will get all parameters and their values. The method handles multi-valued params, hence the List<String> rather than String, and in your case you'll need to get the first list element.

这篇关于如何从给定的URL中提取参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆