reponse返回string字符串转Map()
String result = "Status=REGISTER&ProcessDate=20201201111113&JobCd=REGISTER&AccessID=ba813e2f1111111111f8f2222222ee3f228&AccessPass=1f111111298a986a812222222b41&SiteID=&MemberID=&ClientField1=&ClientField2=&ClientField3=&PayType=33&AuPayMethod=01&AuAcceptCode=T203311133123987&ProcessLastDate=20201201182933";
// 返回内容转 Map
Map<String, String> resultMap = new HashMap<>();
// .split(regex) regex为划分kv的分隔符,汇付支付返回分隔符"\r\n"
// .filter() 按照是否包含"=" 判断分隔后数组中对应元素 是否为键值对格式,过滤非键值对字段
// .map() 键值对中元素按照"="分隔为数组 string.split("regex", -1)解释见下
Arrays.stream(result.split("&"))
.filter(kv -> kv.contains("="))
.map(kv -> kv.split("=",-1))
.forEach(array -> resultMap.put(array[0], array[1]));
涉及点
String.class 中方法 .split(@NotNull String regex, int limit)
一、当limit>0时,limit代表最后的数组长度,同时一共会切割limit-1次,最后没有切割完成的直接放在一起
二、当limit=0时,会尽量多去匹配,并且会把末尾的空(例如:用逗号分隔后面“zhaolei,” 最后就会出现空)去掉
三、当limit<0时,会尽量多去匹配,但不会去掉末尾的空(指代"")