IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Inverser position dans un StringBuffer


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut Inverser position dans un StringBuffer
    Bonjour,

    J' aimerai pouvoir inverser la position de 2 chaine de caractère dans un String buffer .
    Par exemple , si mon String buffer contient:valeur1valeur2valeur3

    Je voudrais obtenir a la fin : valeur2valeur1valeur3

    J ' ai essayé avec la méthode replace de la classe String , mais ca ne fait qu ' écraser une chaine par dessus une autre....

    Merci de votre aide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public static void main(String[] args) {
     
    	String chaineFinal;
    	String valeur1="Valeur1";
    	String valeur2="Valeur2";
    	String valeur3="Valeur3";
    	StringBuffer bufferChaine = new StringBuffer();
    	bufferChaine.append(valeur1).append(valeur2).append(valeur3);
     
    	StringBuffer bufferRemplacement = new StringBuffer(); 
    	String replacement = bufferChaine.toString().replace(valeur1, valeur2);
    	bufferRemplacement = new StringBuffer(replacement);
    	chaineFinal=bufferRemplacement.toString();
    	System.out.println(chaineFinal);
     
     
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    il faudra le faire à la main, en reconstruisant vous même la string modifiée. Il n'y a pas de méthode qui face de la substitution dans les deux sens dans String ou Stringbuffer/StringBuilder

  3. #3
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    tu pourrais écrire une classe qui fasse ça .... du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class LazyStringBuffer implements CharSequence {
         private LinkedList<String> liste  = ....
         // méthode append(String st)
         // méthode getStringAtIndex(int idx)
         //  méthode reOrder(int... index)
    }
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut
    Merci de votre aide , mais pourrais je avoir plus de renseignement si possible?

    Qu ' entendez vous par reconstruction de chaine ?
    Et je n ' ai pas compris ton exemple professeur shadoko , en quoi une linked list va me permettre de résoudre mon problème ?

    En bidouillant un peu , j ' ai réussi a trouver un "semblant" de solution avec la méthode insert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public static void main(String[] args) {
     
    	String chaineFinal;
    	String valeur1="Valeur1";
    	String valeur2="Valeur2";
    	String valeur3="Valeur3";
    	StringBuffer bufferChaine = new StringBuffer();
    	bufferChaine.append(valeur1).append(valeur2).append(valeur3);
    	bufferChaine.delete(bufferChaine.indexOf(valeur2), bufferChaine.indexOf(valeur2)+valeur2.length());
    	bufferChaine.insert(bufferChaine.indexOf(valeur1), valeur2);
    	chaineFinal=bufferChaine.toString();
     
     
     
     
    }
    Mais ca me parait pas très propre tout ca....
    Y ' a t - il une meilleur manière de procéder ? Merci bien

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut
    Résolu finalement avec la méthode replace qui me permet d ' obtenir ce que je veux si je passe la concaténation des 2 valeurs a remplacer en paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static void main(String[] args) {
    	// classe test rapide de  String.replace()
    	String chaineFinal;
    	String valeur1="Valeur1";
    	String valeur2="Valeur2";
    	String valeur3="Valeur3";
    	StringBuffer bufferChaine = new StringBuffer();
    	bufferChaine.append(valeur1).append(valeur2).append(valeur3);
    	 StringBuffer bufferRemplacement = new StringBuffer();   
    	     String replacement = bufferChaine.toString().replace(valeur1+valeur2 , valeur2+valeur1 ); 
    	     bufferRemplacement = new StringBuffer(replacement);  
    	     chaineFinal=bufferRemplacement.toString();  
    	     System.out.println(chaineFinal);
    }
    Merci a tous de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Position dans une query
    Par valoji dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/01/2006, 10h49
  2. Position dans liste
    Par Pascal28 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/01/2006, 18h41
  3. Réponses: 5
    Dernier message: 20/02/2005, 01h14
  4. [Win32] Position dans un fichier
    Par vecchio dans le forum Windows
    Réponses: 7
    Dernier message: 22/03/2004, 16h47
  5. [VB6] Sauvegarder la position dans un Recordset
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo