public String deal(String str){
String[] records = str.split("|");
Map recordMap = new HashMap();
for(int i=0;i<records.length;i++){
String[] fields = records[i].split(",");
recordMap.put(fields[0],records[i]);
}
//修改
recordMap.put("2","2,0,标题88");
//删除
recordMap.remove("2");Iterator keys = recordMap.keySet().iterator();
StringBuffer sb = new StringBuffer();
while(keys.hasNext()){
  sb.append("|");
  sb.append(recordMap.get(keys.next()).toString());
}
if(sb.length()>1){
  return sb.subString(1);
}else{
  return "";
}
}

解决方案 »

  1.   

    思路很好,但出来的字符串会打乱次序,因为Map是散列的试试ArrayList
      

  2.   

    public class Test {

    private String str;  public static void main(String args[])
     {
     //8,0,标题1|2,0,标题2|6,0,标题3|4,0,标题2|1,1,标题5|5,2,标题6|3,2,标题2
     Test t = new Test();
     t.setStr("8,0,标题1|2,0,标题2|6,0,标题3|4,0,标题2|1,1,标题5|5,2,标题6|3,2,标题2");
     t.update("2","标题88");
     System.out.println(t.getStr());
     t.remove("2");
     System.out.println(t.getStr());  }
     
     public void setStr(String value)
     {
     str = value;
     }
     
     public String getStr()
     {
     return str;
     }
     
     public String update(String id, String title)
     {
     if (str == null || str.trim().length()==0)
     return str;
     String[] strArray = str.split("\\|");
     if (strArray != null && strArray.length > 0)
     {
     for (int i=0; i<strArray.length; i++)
     {
     String[] strEach = strArray[i].split(",");
     if (strEach != null && strEach.length == 3 && strEach[0].equals(id))
     {
     strEach[2] = title;
     strArray[i] = strEach[0] + "," + strEach[1] + "," + strEach[2];
     }
     }
     }
     StringBuffer strBuf = new StringBuffer();
     for (int i=0; i<strArray.length; i++)
     {
     if (strArray[i] != null)
     {
     if (strBuf.length()>0)
     strBuf.append("|");
     strBuf.append(strArray[i]);
     }
     }
     str = strBuf.toString();
     return str;
     }
     
     public String remove(String id)
     {
     if (str == null || str.trim().length()==0)
     return str;
     String[] strArray = str.split("\\|");
     if (strArray != null && strArray.length > 0)
     {
     for (int i=0; i<strArray.length; i++)
     {
     String[] strEach = strArray[i].split(",");
     if (strEach != null && strEach.length == 3 && strEach[0].equals(id))
     {
     strArray[i] = null;
     }
     }
     }
     StringBuffer strBuf = new StringBuffer();
     for (int i=0; i<strArray.length; i++)
     {
     if (strArray[i] != null)
     {
     if (strBuf.length()>0)
     strBuf.append("|");
     strBuf.append(strArray[i]);
     }
     }
     str = strBuf.toString();
     return str;
     }
     } 运行后的输出结果:
    8,0,标题1|2,0,标题88|6,0,标题3|4,0,标题2|1,1,标题5|5,2,标题6|3,2,标题2
    8,0,标题1|6,0,标题3|4,0,标题2|1,1,标题5|5,2,标题6|3,2,标题2
      

  3.   

    知道会打乱顺序,觉得就是个模拟数据库的程序,好像顺序不重要
    如果要求顺序,修改如下:
    public String deal(String str){
    String[] records = str.split("\\|");//这个开始写错了,|是正则关键字,刚才忘记了
    Map recordMap = new HashMap();
    List keyList = new ArrayList(); //add key list
    for(int i=0;i<records.length;i++){
    String[] fields = records[i].split(",");
    keyList.add(fields[0]);  //add
    recordMap.put(fields[0],records[i]);
    }
    //修改
    recordMap.put("2","2,0,标题88");
    //删除
    recordMap.remove("2");//Iterator keys = recordMap.keySet().iterator(); //remove
    Iterator keys = keyList().iterator();  //add
    StringBuffer sb = new StringBuffer();
    while(keys.hasNext()){
      sb.append("|");
      sb.append(recordMap.get(keys.next()).toString());
    }
    if(sb.length()>1){
      return sb.subString(1);
    }else{
      return "";
    }
    }