比如传过来的响应报文为:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<business id=\"GETKPM\">
<body><returncode>0</returncode><returnmsg>NTAwMTAyMDEwMDAyODk3MjAxOTA2MDYxNzI1NDQwNDg2MzEyMw==</returnmsg><
/body>
</business>
我现在只想获取NTAwMTAyMDEwMDAyODk3MjAxOTA2MDYxNzI1NDQwNDg2MzEyMw==这段内容,用字符串方法要一个个截取速度慢,找了半天发现使用正则表达式进行截取。
上代码,我自己写成了一个方法。
getString(s, flag);第一个参数为传过来的报文(字符串形式),第二个参数为我截取那组信息的标签。
pattern是一个编译好的正则表达式,而Mather是一个正则表达式适配器。
String s= "<?xml version=\"1.0\" encoding=\"utf-8\"?><business id=\"GETKPM\"><body><returncode>0</returncode><returnmsg>NTAwMTAyMDEwMDAyODk3MjAxOTA2MDYxNzI1NDQwNDg2MzEyMw==</return"
+ "msg></body></business>\r\n" ;
String flag = "returnmsg";
getString(s, flag);
}
public static String getString(String s,String flag){
int length = flag.length();
Pattern pattern = Pattern.compile("<"+flag+">.*</"+flag+">"); //匹配项 用法a.*b 贪婪算法,表示a开头b结尾的字符串。
Matcher matcher = pattern.matcher(s);
String ret;
if (matcher.find()) {
ret=matcher.group(0).substring(length+2,matcher.group(0).length()-(length+3));
}
else {
ret="未找到";
}
return ret;
}