我需要从stringbuilder中删除某些字符,但由于某种原因,不会删除一对字符。这就是我到目前为止:我有一个字符串和arraylist作为参数的方法。我传递的字符串如下:" beabeefeab"并且arraylist包含以下6个长度为2的字符组合:ab,ae,af,be,bf,ef。带有组合的这个arraylist的名字是arrayListCombos,我在外面循环遍历这个arraylist for循环并得到这个字符串组合的各个字符,这样我就可以将各个字符与我的stringbuilder中的字符串char进行比较。 for循环内部是遍历stringbuilder并将modString.charAt(x)与从组合中获取的firstChar进行比较。例如,请看第一个组合ab,firstChar = a和secondChar = b。我可以删除字符串" beabeefeab"中的第一个e,但连续两个e不会被删除,我得到以下字符串:" babeeab"我应该得到" babab"删除除了a和b以外的所有内容。任何人都可以帮忙 - 我真的很感激。
for(int w=0;w<arrayListCombos.size();w++){
String tempComboToKeep = arrayListCombos.get(w);
//split up char in combo and store independantly in order to compare
char firstChar = tempComboToKeep.charAt(0);
System.out.println("first char: "+firstChar);
char secondChar = tempComboToKeep.charAt(1);
System.out.println("second char: "+secondChar);
StringBuilder modString = new StringBuilder(s);
//System.out.println("here is stringbuilder before modify: "+modString.toString());
//walk through stringbuilder to find the individual chars and remove rest
for(int x=0;x<modString.length();x++){
//if first char is NOT equal to one of the combos, delete it
if (modString.charAt(x) != firstChar){
System.out.println("char not equal to firstChar: "+modString.charAt(x)+" "+firstChar);
//the char inside stringbuilder does not equal either of the combo chars so need to be removed
if (modString.charAt(x) != secondChar){
System.out.println("char not equal to secondChar either!!! " +
"DELETE this char from string builder: "+modString.charAt(x));
modString.deleteCharAt(x);
}
}
}
答案 0 :(得分:0)
我发现了我的问题。我正在循环遍历stringbuilder,删除字符到这个stringbuilder并尝试在循环中使用这个修改过的stringbuilder来遍历所有字符。为了解决这个问题,我刚刚创建了一个新的stringbuilder并使用了append方法并在每次需要保留一个字符时附加,这使我能够继续使用原始的stringbuilder进行循环,这样我就不会错过任何字符。