如何 把字符串(28|29|30)&31&32,解析成
(id=1|name=2|..)&..&value=4
说明上面的数字,从下面表里查询到,替换成字段2
table
字段1 字段2
28 id=1
29 name=2
.
.
32 value=4
(id=1|name=2|..)&..&value=4
说明上面的数字,从下面表里查询到,替换成字段2
table
字段1 字段2
28 id=1
29 name=2
.
.
32 value=4
解决方案 »
- 我要是实现一个对象数组的录入和遍历查询
- java.util.ConcurrentModificationException List问题
- 编程解析字符串型的表达式对括号如何处理
- JDBC连接数据库的问题
- 搞死人的java Comm.jar包!还是有问题
- 请结合GridBagLayout中weight的指定来帮我理解下一面这段话?
- 奇怪的问题!
- 请教各位,如何做一个较好的数据库连接池,有资料的,也好。加分,谢谢了!!
- 【求助】 redis 实时并列排行榜解决方案
- 怎么解决A java exception has occurred,求救求救..........
- 字符串大小写变换问题
- 非常着急,大家帮忙看看这道题到底哪样是正确的???
(id=1|name=2|..)&..&value=4
----------------------------------------------
如果table里的数字顺序跟字符串里的数字顺序是一致的话,并且没有重复,可以这样:
str="(28|29|30)&31&32"
str.replaceAll("[\\s]+","%s");
String.format(str,val[])//val[]是table里要替换的值的集合。
楼上的,这行什么意思,能解释下吗
String src = "(56|1|23)&(33|34)&35&36";
String testSrc = src.substring(1, src.length()-1);
String[] strs = ConvertUtil.stringToStrings(src, "&");
List list = new ArrayList();
for (int i=0;i<strs.length;i++) {
if (StringParse.isNumber(strs[i])){
list.add(strs[i]);
}else {
String[] strs2 = ConvertUtil.stringToStrings(strs[i].substring(1, strs[i].length()-1), "|");
for (int j =0;j<strs2.length;j++) {
list.add(strs2[j]);
}
}
}
String val[] = new String[list.size()];
for (int k=0;k<list.size();k++) {
val[k] = String.valueOf(k+1);
}
src = src.replaceAll("[\\d]+","%s");
String result = String.format(src,val);//
System.out.println(result);
}
比如 "(56|1|23)&(33|34)&35&36"
结果是 (1|2|3)&(4|5)&6&7
{
//插入的字符串
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();
}
convert("(28|28|28)&28&28")(id=28|name=28|p1=28)&p2=28&value=28