字符串(28|29|30)&31&32解析问题,求助
如何   把字符串(28|29|30)&31&32,解析成 
 (id=1|name=2|..)&..&value=4 
 说明上面的数字,从下面表里查询到,替换成字段2     
 table 
 字段1            字段2 
 28                     id=1 
 29                     name=2 
 . 
 . 
 32                     value=4
------解决方案--------------------如何 把字符串(28|29|30)&31&32,解析成 
 (id=1|name=2|..)&..&value=4 
 ---------------------------------------------- 
 如果table里的数字顺序跟字符串里的数字顺序是一致的话,并且没有重复,可以这样: 
 str= "(28|29|30)&31&32 " 
 str.replaceAll( "[\\s]+ ", "%s "); 
 String.format(str,val[])//val[]是table里要替换的值的集合。。。。 
------解决方案--------------------贴一个解决方案   
 public static String convert(String str) 
 { 
          //插入的字符串 
 	String[] insert={ "id= ", "name= ", "p1= ", "p2= ", "value= "}; 
 	//切分字符串的正则表达式 
 	String reg= "[ (|)&] "; 
 	//切分 
 	String ss[]=str.split(reg); 
 	//剔除空的字符串 
 	ArrayList <String>  list=new ArrayList <String> ();		 
 	for(int i=0;i <ss.length;i++) 
 		if(ss[i].trim().length()!=0) 
 			list.add(ss[i]); 
 	ss=new String[list.size()]; 
 	ss=list.toArray(ss); 
 	//计算子串的偏移 
 	int[] index=new int[ss.length]; 
 	for(int i=0;i <index.length;i++) 
 		index[i]=str.indexOf(ss[i],i> 0?index[i-1]:0); 
 	//逐个替换子串 
 	StringBuffer sb=new StringBuffer(str); 
 	for(int i=0;i <ss.length && i <insert.length;i++) 
 	{ 
 		if(insert[i]==null || insert[i].trim().equals( " ")) 
 			continue; 
 		sb.insert(index[i],insert[i]); 
 		//替换后校正子串偏移 
 		for(int j=i+1;j <index.length;j++) 
 			index[j]+=insert[i].length(); 
 	} 
 	return sb.toString(); 
 }