2017-01-25 3 views
0

J'essaie d'exécuter une boucle pour supprimer certains caractères d'une chaîne. mais quand je cours le code suivant je reçois la sortie (je sur) seulement de la première exécution. Je ne comprends pas le reste de la chaîne. Quelqu'un peut-il aider s'il vous plaît ce que j'ai besoin d'ajouter ici? ne montre que le résultat de la première itération. MerciSupprimer les caractères du générateur de chaînes

someStr = "I don't know this"; 
StringBuilder sb = new StringBuilder(someStr); 
int n = 3 
for (int i = n - 1; i < sb.length(); i = n + 1) { 
    sb = sb.deleteCharAt(i); 
} 
System.out.println(sb.toString()); 
+4

Qu'est-ce 'n'? ... –

+1

Vérifiez ce que votre déclaration d'augmentation est en train de faire – Taelsin

+0

n peut être tout entier comme 2,3,4 etc – user3396478

Répondre

1

La troisième partie de l'instruction for est l'instruction qui doit incrémenter ou décrémenter votre index.

Là-bas, il est toujours 4.

Pour être plus clair:

1st iteration : i = 2 => you remove the 'd', your string is now "I on't know this" 

2nd iteration : i = 4 => you remove the ''', your string is now "I ont know this" 

3rd iteration : i = 4 => you remove the 't', your string is now "I on know this" 

4th iteration : i = 4 => you remove the ' ', your string is now "I onknow this" 

...

0

Pourquoi ne pas utiliser String.replaceAll()?

someStr = "I don't know this"; 
System.out.print("Output :"); 
System.out.println(someStr .replaceAll("t", "")); 
0

Si vous souhaitez supprimer des caractères d'une chaîne, je vous recommande d'utiliser Regex. Ceci est un exemple pour remplacer des ressorts vides les caractères que vous devez supprimer:

public static String cleanWhitPattern(String sample, String , String regex) { 

    if (sample != null && regex != null) { 
     Pattern pattern = Pattern.compile(regex); 
     Matcher matcher = pattern.matcher(sample); 

     if (matcher.find()) { 
      return matcher.replaceAll(""); 
     } 

     return sample; 
    } 

    return null; 
} 

Maintenant, vous appelez simplement cette méthode avec votre motif requis:

System.out.print(cleanWithPattern("I don't know this", "o*")); 

Et votre sortie devrait être le suivant:

I dn't knw this