先把它附给List,然后用List的remove方法; String str[] = new String[5]; for (int i = 0; i < str.length; i++) { str[i] = "" + i; } List list = new ArrayList(); for (int i = 0; i < str.length; i++) { list.add(str[i]); } list.remove(3); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
temp[i]=temp[i].substring(temp[i].indexOf(asdf));
}
while(temp[i].indexOf(jkl)!=-1){
temp[i]=temp[i].substring(temp[i].indexOf(jkl));
}}
===========================================
//这里拿jkl为例子;jkl的初始位置
int n1 = a.indexOf("jkl");
System.out.println(n1);
//jkl后面第一个"|"的位置
int nn = a.substring(n1).indexOf("|");
String a0 = a.substring(0,n1-1);
String a1 = a.substring(n1).substring(nn);
System.out.println(a0 + "-" + a1);
//删除JKL,重新拼接字符串
String newA = a0 + a1;
System.out.println("新的字符串: "+newA);
String temp[]="asdfasdfadsf|jkl|asdf|dddk|kkafv".split("|");for(int i=0,i<temp.length;i++){
temp[i]=temp[i].replaceAll("asdf","");
temp[i]=temp[i].replaceAll("jkl","");
}
temp[i]=temp[i].replaceAll("asdf","");
if(temp[i].indexOf("||")!=-1) temp[i]=temp[i].replaceAll("\\|\\|","\\|");}
不行啊,按照你的代码,测试了一下
当要删除的数据是jkl的时候,没问题,我是说变量a里面,jkl是在第2组里面。
可是如果要删除第一组asdfasdfadsf或者最后一组的kkafv,就不行了。
老大,救命啊!!!!
我知道,离胜利已经不远了,可是总是搞不定!!!!
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
由于asdfasdfadsf和kkafv是这个数组的第一个和最后一个,针对这种情况;所以需要进行边界判断,我给你的方法是通常情况,不包括边界判定,所以你应该这么做:
当该段字串是第一个的时候:直接把该字串后第一个“|”以后的字符串作为新的字符串输出;
当该字串是最后一个的时候;直接将该字串前第一个“|”以前的字符串作为新的字串输出即可。
============================================================================
String a = "asdfasdfadsf|jkl|asdf|dddk|kkafv";
//需要删除的子字串(作为一个变量)
//String substr = "asdfasdfadsf";
String substr = "kkafv";
//待删除子串所在位置
int n1 = a.indexOf(substr);
int nn = 0;
System.out.println(n1);
String newA = "";
if(n1 > 0 && a.substring(n1+1).indexOf("|")>0){ //如果待删子串不是第一个
System.out.println("middle........");
//待删除子串之前的字符串
String a0 = a.substring(0, n1 - 1);
//待删除子串后面第一个"|"的位置
nn = a.substring(n1).indexOf("|");
//待删除子串之后的字符串
String a1 = a.substring(n1).substring(nn);
System.out.println(a0 + "-" + a1);
// 删除JKL,重新拼接字符串
newA = a0 + a1;
}else if(a.substring(a.indexOf(substr)+1).indexOf("|") <= 0){ //如果是最后一个
System.out.println("last........");
//直接找到最后一个"|"所在位置
nn = a.indexOf(substr) - 1;
newA = a.substring(0,nn);
}else{ //如果待删子串是第一个
System.out.println("first........");
//直接找到第一个“|”所在位置
nn = a.indexOf("|");
newA = a.substring(nn+1);
}System.out.println("新的字符串: " + newA );
现在花点时间调试了一下,我想以下程序的lastsource应该是你要的代码了!
String source = "asdfasdfadsf|jkl|asdf|dddk|kkafv";
String lastsource = source;
if (source.indexOf("|") != -1) {
lastsource = "";
while (source.indexOf("|") != -1) {
lastsource+=source.substring(0,source.indexOf("|"));
source=source.substring(source.indexOf("|")+1);
}
lastsource+=source;
}
lastsource=lastsource.replaceAll("asdf", "");
lastsource=lastsource.replaceAll("jkl", "");
System.out.println("======lastsource:"+lastsource);
这样的问法是有点无助于你的进步。
String str[] = new String[5];
for (int i = 0; i < str.length; i++) {
str[i] = "" + i;
}
List list = new ArrayList();
for (int i = 0; i < str.length; i++) {
list.add(str[i]);
}
list.remove(3);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}