Insérer un caractère dans un string [Résolu/Fermé]

Signaler
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
-
Messages postés
16334
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 mai 2021
-
Bonjour,
bon c'est sûrement un truc tout bête mais je cherche comment faire pour insérer dans un string un même caractère à un intervalle régulier !

J'avais fait quelque chose comme ça :
public class carac

{

  public static void main(String[] args)
  {
	  String test = "blablablablablablabla";
	  int longueur = test.length();
	  for ( int i = 0; i > longueur ; i++ )
	  {
	         test = test + test.charAt(i);
	         if (i==2)
	         {
	        	test += "\n" ;
	         }
	  }
	  System.out.println(test);
  }
}


Mais là rien ne se passe, et je ne comprend pas pourquoi (enfin y'a le blabla qui apparait mais sans le retour à la ligne).
De plus ce code ne marcherait que pour i=2, or je voudrais le faire tous les 2 caractères par exemple.

Merci de m'éclairer !

1 réponse

Messages postés
16334
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 mai 2021
2 828
Rien ne se passe à cause de ton test de boucle "i > longueur" qui est faux...

Remarque : ce que tu fais ce n'est pas de l'insertion de caractères, mais de la concaténation de chaîne de caractères ! Si tu veux vraiment faire de l'insertion, utilise un StringBuilder et la méthode insert(int,char).
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
16334
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 mai 2021
2 828
Il faut que tu te serves de ta boucle, et remplacer ton 2, par 2*i par exemple, sinon forcément tu vas toujours insérer ton caractères au même endroit...
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
6
Avec 2*i, j'ai un espace entre chaque caractère ! Genre b l a b l a
De plus si je met un nombre plus grand que 2, j'ai droit à un Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
Messages postés
16334
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 mai 2021
2 828
J'ai mis "2*i par exemple", après tu fais ce que tu veux !

Ton exception est dû au fait que tu t'arrêtes si "i<longueur" ce qui signifie que tu veux insérer "longueur" espaces. Or si tu les mets par exemple tous les deux caractères, tu ne pourras mettre que longueur/2 espaces dans la chaîne, si tu dépasses ce nombre, ça plante.

Il faudrait qu'au lieu d'utiliser "longueur" (dont je ne sais pas quelle valeur tu lui as donné), tu utilises plutôt la taille de sb (attention : elle change quand tu fais l'insertion)

for (int i =0; i<=sb.length(); i+=3)
    sb.insert(i,'-');
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
6
Oui oui, j'avais bien compris que que c'était un exemple ! je signalais juste qu'il ne fonctionnait pas comme prévu.

Le "longueur" c'est en fait la taille du string, et si je le diminue en longueur/2 par exemple, l'insertion ne fera pas jusqu'à la fin du string, non ?

En tous cas maintenant ça marche, merci !

Seul petit soucis, dans ma console au début y'a un espace qui apparait, tu sais d'où il vient ?

Merci.
Messages postés
16334
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 mai 2021
2 828
Si tu commences par i=0, tu peux avoir inséré un espace au tout début...