Java简单递归demo

已知字符串格式为"A1...A2...A3...",通过递归进行截取。

package zjtest;

import java.util.HashMap;
import java.util.regex.Pattern;


public class Test {

public static void main(String[] args) {
String str = "A10670100204020180000020408201347210300600002304008882D4E5405008320001 A20670100204020180000020408201347210300600002304008882D4E5405008320001 A502901010113.3148120200923.099102";



HashMap<String , String> tagFieldMap = new HashMap<String , String>();

Test.preprocessingTLV(str,tagFieldMap);

String a1 = tagFieldMap.get("A1");
String a2 = tagFieldMap.get("A2");
String a3 = tagFieldMap.get("A3");
String a4 = tagFieldMap.get("A4");
String a5 = tagFieldMap.get("A5");
String a6 = tagFieldMap.get("A6");
System.out.println(a1+"==="+a2+"==="+a3+"==="+a4+"==="+a5+"==="+a6);

//取到A2的值进行拆解
if(!"".equals(a2)&&null!=a2){
HashMap<String , String> a2TagH = new HashMap<String , String>();
HashMap<String , String> a2ValueH = new HashMap<String , String>();
Test.dismantlingTLV(a2, a2TagH, a2ValueH);
}
if(!"".equals(a5)&&null!=a5){
HashMap<String , String> a5TagH = new HashMap<String , String>();
HashMap<String , String> a5ValueH = new HashMap<String , String>();
Test.dismantlingTLV(a5, a5TagH, a5ValueH);
String longitude =a5ValueH.get("01");
String latitude =a5ValueH.get("02");
System.out.println(longitude);
System.out.println(latitude);
}

}

/**
* 预处理tlv
* @return
*/
public static void preprocessingTLV(String str,HashMap<String, String> tagFieldMap){

String tagField = str.substring(0,2);
String pattern = "A[1-9]";
boolean isMatch = Pattern.matches(pattern, tagField);
if(isMatch){
int length = Integer.parseInt(str.substring(2,5));
String a = str.substring(0,length+5);
str = str.substring(length+5);
tagFieldMap.put(tagField, a);
}else{
return;
}
if(str.length()>0){
preprocessingTLV(str,tagFieldMap);
}

}




}

猜你喜欢

转载自www.cnblogs.com/TonyChung/p/10965764.html