本地存储交易记录与微信交易记录进行对比,参数处理过程:
String newStr = returnMsg.replaceAll(",", " "); // 去空格
String[] tempStr = newStr.split("`"); // 数据分组
String[] t = tempStr[0].split(" ");// 分组标题
int k = 1; // 纪录数组下标
int j = tempStr.length / t.length; // 计算循环次数
for (int i = 0; i < j; i++) {
SortedMap<String,String> mapStr = new TreeMap<String,String>();
WeixinBillDown wechatBills = new WeixinBillDown();
for (int l = 0; l < t.length; l++) {
/*********************** 我添加的开始 ***********************/
//如果是最后列且是最后一行数据时,去除数据里的汉字
if((i == j - 1) && (l == t.length -1)){
String reg = "[\u4e00-\u9fa5]";//汉字的正则表达式
Pattern pat = Pattern.compile(reg);
Matcher mat=pat.matcher(tempStr[l + k]);
String repickStr = mat.replaceAll("");
System.out.println(t[l] + ":" + repickStr);//最后一个数据进行保存数据
}else{
System.out.println(t[l] + ":" + tempStr[l + k]);
mapStr.put(t[l], tempStr[l + k]);
}
/*********************** 我添加的结束 ***********************/
}
//调用接口发送数据,写数据库
System.out.println("---------");// 摘取数据存入数据库
k = k + t.length;
}
这个参数对应有点多,需要一一对应,最终实现自动对比账单的功能;
在实现过程中遇见一个以前没有见过的问题:
java.lang.IllegalArgumentException: !hex:1
最终确认是参数的问题,将参数进行整理对比之后,确认是参数中多余了%,这个百分号在http请求的过程中会在解析URL过程中歧义,所以解决办法就来了,一种是在传递过程中直接用其他指定的符号进行代替,在保存数据库时再转回来,第二种是直接传一个%的对应码,他的对应码是%25;这样就解决了这个问题