现在得到一个字符串
EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0,OPEENGNAME1='张三',OPEENGNAME2='李四',OPEENGNAME3='王二麻子',OPEENGUSERID1='3',OPEENGUSERID2='112267',OPEENGUSERID3='141755',REPSTS='0',UPDTERM='127.0.0.1',UPDUSERID='3'我先把它转化成新的sql的检索条件ip='127.0.0.1',guanliren='张三',fuwuyuan='李四',keren='王二麻子'简单的说,怎么能把上面的字符串做处理以后,得到下面的字符串谢谢大家,希望能得到你们的帮助

解决方案 »

  1.   

    String[] str = s.split(",");//根据“,”把字符串分割
    然后依次判断是否为你需要的字符串,如果是 进行替换截取,最后合并。
      

  2.   

    如,if(str[i].startswith(",OPEENGNAME1="))
        { s = str[i].substring(1);//去掉“,”
          s = s.replaceAll("OPEENGNAME1","guanliren");}  
      

  3.   

    如果列名固定,可以用HashMap
    String str = "EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0," +
    "OPEENGNAME1='张三',OPEENGNAME2='李四',OPEENGNAME3='王二麻子'," +
    "OPEENGUSERID1='3',OPEENGUSERID2='112267',OPEENGUSERID3='141755',REPSTS='0'," +
    "UPDTERM='127.0.0.1',UPDUSERID='3'";
    Matcher m = Pattern.compile("([^,]+)=([^,$]+)[,$]").matcher(str);
    HashMap hp = new HashMap();
    while(m.find()){
    hp.put(m.group(1), m.group(2));
    }
    //ip='127.0.0.1',guanliren='张三',fuwuyuan='李四',keren='王二麻子' 
    StringBuffer rtn = new StringBuffer();
    rtn.append("ip="+hp.get("UPDTERM")+",");
    rtn.append("guanliren="+hp.get("OPEENGNAME1")+",");
    rtn.append("fuwuyuan="+hp.get("OPEENGNAME2")+",");
    rtn.append("keren="+hp.get("OPEENGNAME3"));

    System.out.println(rtn.toString());
      

  4.   

    EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0,OPEENGNAME1='张三',OPEENGNAME2='李四 ',OPEENGNAME3='王二麻子',OPEENGUSERID1='3',OPEENGUSERID2='112267', OPEENGUSERID3='141755',REPSTS='0',UPDTERM='127.0.0.1',UPDUSERID='3'
    如果这个字符串是固定的,就是各项的位置不变,只是你需要的内容(人名和ip)变的话,用正则表达式轻松搞定。
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexTest { public static void main(String[] args) {
    String str="EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0,OPEENGNAME1='张三',OPEENGNAME2='李四 ',OPEENGNAME3='王二麻子',OPEENGUSERID1='3',OPEENGUSERID2='112267', OPEENGUSERID3='141755',REPSTS='0',UPDTERM='127.0.0.1',UPDUSERID='3'";
    String result="";
    Matcher m = Pattern.compile(".*OPEENGNAME1=(.+),OPEENGNAME2=(.+),OPEENGNAME3=(.+),OPEENGUSERID1.*UPDTERM=(.+),UPDUSERID.*").matcher(str);
    if(m.matches())
    {
    result="ip="+m.group(4)+",guanliren="+m.group(1)+",fuwuyuan="+m.group(2)+",keren="+m.group(3);
    }
    System.out.println(result); }}
      

  5.   

    貌似用不着HashMap,
    如果EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0...这样的顺序不固定,就是说可能会有
    EXAMAGEMONTH=0跑到前面的,可以用上面的那个HashMap的例子