調用返回報文標簽中的存在中划線“-”,不符合規范,需要統一進行轉換,但不能替換標簽內的內容,利用正則匹配重新輸出
/** * 正則匹配報文中的xml標簽,將其中的"-"轉換為"_",重新輸出 * 示例<Card-No>120-111</Card-No> * 轉換輸出為:<Card_No>120-111</Card_No> */ public static String replaceMidLine(String resourceXml){ /** * 匹配規則: * <[^>]+>:匹配xml(html)標簽,如<a>,</a>;<a/>;< > 內的除 > 之外的所有字符 * (?=.*[-]):匹配含 - 的字符串,與上條規則並列 * */ Pattern pattern = Pattern.compile("<(?=.*[-])[^>]+>"); Matcher matcher = pattern.matcher(resourceXml); StringBuffer sb = new StringBuffer(); while(matcher.find()){ matcher.appendReplacement(sb,matcher.group().replace("-","_")); } matcher.appendTail(sb); return sb.toString(); }