站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题请教高手一个关于字符串的问题!!!!!!!!!!!!!!!!

请教高手一个关于字符串的问题!!!!!!!!!!!!!!!!

摘要: 请教高手一个关于字符串的问题!!!!!!!!!!!!!!!!


#有这样一个字符串“8,0,标题1|2,0,标题2|6,0,标题3|4,0,标题2|1,1,标题5|5,2,标题6|3,2,标题2”
#更新操作:
#如果我现在得到一个id="2",title="标题88"
#需要把字符串里对应的“2,0,标题2”(2为id号)改变为2,0,标题88,使原来的字串变为
#"8,0,标题1|2,0,标题88|6,0,标题3|4,0,标题2|1,1,标题5|5,2,标题6|3,2,标题2",其实就是一个找到对应的标题名替换的过程
#删除操作:
#如果我现在得到一个id="2"
#需要把字符串里对应的“2,0,标题2”(2为id号)删除,使原来的字串变为
#"8,0,标题1|6,0,标题3|4,0,标题2|1,1,标题5|5,2,标题6|3,2,标题2",其实就是一个找到对应的标题名截去的过程

请问对该字符串实现这两种操作我该如何做呢


有点意思,id会不会重复?


字符串里的ID不会重复


public String deal(String str){
String[] records = str.split("|");
Map recordMap = new HashMap();
for(int i=0;iString[] 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 "";
}
}


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

试试ArrayList


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 {
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 {
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 {
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 {
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



知道会打乱顺序,觉得就是个模拟数据库的程序,好像顺序不重要
如果要求顺序,修改如下:


public String deal(String str){
String[] records = str.split("//|");//这个开始写错了,|是正则关键字,刚才忘记了
Map recordMap = new HashMap();
List keyList = new ArrayList(); //add key list
for(int i=0;iString[] 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 "";
}
}



UPUP


↑返回目录
前一篇: EJB中的BMP怎样链接数据库呢?
后一篇: JNDI的问题