2016-11-10 7 views
0

Мне нужно удалить некоторые символы из строкового конструктора, но по какой-то причине парочка не удаляется. Это то, что у меня есть до сих пор: у меня есть метод со строкой и arraylist в качестве параметров. Строка, которую я передаю, следующая: «beabeefeab», а arraylist содержит следующие 6 символьных комбинаций длины 2: ab, ae, af, be, bf, ef. Имя этого arraylist с комбо - arrayListCombos, и я прохожу через этот arraylist снаружи для цикла и получаю отдельные символы этой комбинации строк, чтобы я мог сравнивать отдельные символы со строковым символом в моей строковой архитектуре. Внутренний цикл - это пройти через строковый конструктор и сравнить modString.charAt (x) с firstChar, взятым из комбо. Посмотрите сначала на combo ab, firstChar = a и secondChar = b. Я могу удалить первый e из строки «beabeefeab», но два последовательных e не удаляются, и я получаю следующую строку: «babeeab», и я должен получить «babab» с удалением всех, кроме a и b. Может кто-нибудь помочь - я бы очень признателен.deleteCharAt() не удаляет символ в stringbuilder все внезапные в цикле

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

Я понял свою проблему. Я зацикливался на stringbuilder, удаляя символы в этот строковый конструктор и пытаясь использовать этот модифицированный строковый конструктор в цикле, чтобы пройти через все символы. Чтобы исправить это, я только что создал новый строковый конструктор и использовал метод append и добавлял каждый раз, когда мне нужно было сохранить символ, и это позволило мне продолжить цикл с исходным строковым редактором, чтобы я не пропускал никаких символов.

 Смежные вопросы

  • Нет связанных вопросов^_^