如何在字符串中提取ID1和ID2的值

时间:2015-03-17 13:24:52

标签: java

我有一个字符串测试,我可以看到VD1和VD2。 如何提取VD1和VD2的值并将其存储在字符串中。

String test =
  "DomainName=xyz.zzz.com
   &ModifiedOn=03%2f17%2f2015
   &VD1=MTMwMDE3MDQ%3d
   &VD2=B67E48F6969E99A0BC2BEE0E240D2B5C
   &SiteLanguage=English"

此处VD1=MTMwMDE3MDQ%3dVD2=B67E48F6969E99A0BC2BEE0E240D2B5C的值。但这些都是动态的价值观。这里VD1和VD2由'&'分开。

5 个答案:

答案 0 :(得分:1)

尝试使用这样的正则表达式:

public static void main(String[] args) throws Exception {
    String test = "DomainName=xyz.zzz.com&ModifiedOn=03%2f17%2f2015&VD1=MTMwMDE3MDQ%3d&VD2=B67E48F6969E99A0BC2BEE0E240D2B5C&SiteLanguage=English";
    Pattern p = Pattern.compile("VD1=(.*)&VD2=(.*)&");
    Matcher m = p.matcher(test);
    while(m.find()){
        System.out.println(m.group(1));
        System.out.println(m.group(2));
    }

}

O / P:

MTMwMDE3MDQ%3d
B67E48F6969E99A0BC2BEE0E240D2B5C

答案 1 :(得分:0)

您可以使用正则表达式或使用String index()和split()方法。

匹配并捕获VD1值的正则表达式是

/VD1=([^&]*)/

答案 2 :(得分:0)

如果你确定那些总是"&"在VD1和VD2的值之后,这种分裂将会:

    String test = "DomainName=xyz.zzz.com&ModifiedOn=03%2f17%2f2015&VD1=MTMwMDE3MDQ%3d&VD2=B67E48F6969E99A0BC2BEE0E240D2B5C&SiteLanguage=English";
    String vd1 = test.substring(test.indexOf("VD1=")+4, test.indexOf("&", test.indexOf("VD1")));
    String vd2 = test.substring(test.indexOf("VD2=")+4, test.indexOf("&", test.indexOf("VD2")));

    System.out.println("VD1:" + vd1 + "\nVD2:" + vd2);

这只是一个演示,对于制作而言,您必须提取索引以获得更好的性能。

答案 3 :(得分:0)

您可以使用String.split(...)将字符串拆分。例如,test.split("&")首先将字符串拆分为单个标记(格式为"key=value")。

您可以执行以下操作来实现此目的:

String vd1 = null, vd2 = null;
for (String token : test.split("&")) {
    // For each token, we check if it is one of the keys we need:
    if (token.startsWith("VD1=")) {
        // The number 4 represents the length of the String "vd1="
        vd1 = token.substring(4);
    } else if (token.startsWith("VD2=") {
        vd2 = token.substring(4);
    }
}
System.out.println("VD1 = " + vd1);
System.out.println("VD2 = " + vd2);

但是,如果要解析任意键,请考虑使用更强大的解决方案(而不是对for循环中的键进行硬编码)。

另见the documentation for the String class

答案 4 :(得分:0)

String test = "DomainName=xyz.zzz.com&Test&ModifiedOn=03%2f17%2f2015&VD1=MTMwMDE3MDQ%3d&VD2=B67E48F6969E99A0BC2BEE0E240D2B5C&SiteLanguage=English";
HashMap<String, String> paramsMap  = new HashMap<String, String>();
String[] params = test.split("&");
for (int i=0; i<params.length; i++) {
    String[] param = params[i].split("=");
    String paramName = URLDecoder.decode(param[0], "UTF-8");
    String paramValue = null;
    if(param.length > 1)
        paramValue = URLDecoder.decode(param[1], "UTF-8");

    paramsMap.put(paramName, paramValue);
}
String vd1 = paramsMap.get("VD1");
String vd2 = paramsMap.get("VD2");