我有一个字符串测试,我可以看到VD1和VD2。 如何提取VD1和VD2的值并将其存储在字符串中。
String test =
"DomainName=xyz.zzz.com
&ModifiedOn=03%2f17%2f2015
&VD1=MTMwMDE3MDQ%3d
&VD2=B67E48F6969E99A0BC2BEE0E240D2B5C
&SiteLanguage=English"
此处VD1=MTMwMDE3MDQ%3d
和VD2=B67E48F6969E99A0BC2BEE0E240D2B5C
的值。但这些都是动态的价值观。这里VD1和VD2由'&'分开。
答案 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循环中的键进行硬编码)。
答案 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");