Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在url字符串上应用正则表达式_Java_Regex - Fatal编程技术网

Java 在url字符串上应用正则表达式

Java 在url字符串上应用正则表达式,java,regex,Java,Regex,我有一个这样的url 我想在对第三方系统进行rest调用之前应用正则表达式。该正则表达式应该删除所有没有值的键。i、 e从这个给定的url中,我的正则表达式应该删除“&isStudent”、“&stream”和“&courseType”,剩下的是 有指针吗?我不能在一个正则表达式中完成,因为仅键参数的数量是可变的。但是我可以用这样一个简短的程序来做 public class Playground { public static void main(String[] args) {

我有一个这样的url

我想在对第三方系统进行rest调用之前应用正则表达式。该正则表达式应该删除所有没有值的键。i、 e从这个给定的url中,我的正则表达式应该删除“&isStudent”、“&stream”和“&courseType”,剩下的是


有指针吗?

我不能在一个正则表达式中完成,因为仅键参数的数量是可变的。但是我可以用这样一个简短的程序来做

public class Playground {

    public static void main(String[] args) {
        String testInput = "http://abc-xyz.com/AppName/service?id=1234&isStudent&stream&shouldUpdateRecord=Y&courseType";

        String[] tokens = testInput.split("\\?");
        String   urlPrefix = tokens[0];
        String   paramString = tokens[1];

        String[] params = paramString.split("&");

        StringBuilder sb = new StringBuilder();
        sb.append(urlPrefix + "?");
        String keyValueRegex = "(\\w+)=(\\w+)";
        String amp = "";    // first time special
        for (String param : params) {
            if (param.matches(keyValueRegex)) {
                sb.append(amp + param);
                amp = "&";  // second time and onwards
            }
        }

        System.out.println(sb.toString());

    }

}
该程序的输出如下:

http://abc-xyz.com/AppName/service?id=1234&shouldUpdateRecord=Y