Partage
  • Partager sur Facebook
  • Partager sur Twitter

ReplaceAll() en JAVA

    6 novembre 2008 à 13:51:27

    Bonjour à tous.

    Je suis face à un problème que je n'arrive pas à resoudre, et bien qu'ayant cherché un peu partout, je n'ai trouvé aucune solution.

    Alors voila mon problème:

    J'ai une variable de type string qui contient un chemin du type:

    String mavariable="C:\Users\Pierre\workspace\Instrument\src\musique3.jpg";

    Je souhaiterais remplacer TOUS les '\' par '/'.

    Donc je souhaiterais que:

    "C:\Users\Pierre\workspace\Instrument\src\musique3.jpg"
    DEVIENNE
    "C:/Users/Pierre/workspace/Instrument/src/musique3.jpg"

    Alors comme je vous l'ai deja dit plutôt, j'ai essayé pas mal de choses, mais rien y fait.
    Je m'en remet à vous afin de combler mon manque de savoir concernant la question qui m'envoie vers vous aujourd'hui.

    Je vous remercie par avance.

    Pierre-Alexandre.
    • Partager sur Facebook
    • Partager sur Twitter
      6 novembre 2008 à 14:22:01

      salut,

      normalement String mavariable2 = mavariable.replaceAll("\\","/"); doit fonctionner.

      Sinon je peux te demander l'utilité de cela. Si c'est pour des fichiers, les classes File et URL est prévue pour utiliser le bon séparateur (/ ou \) au bon endroit.
      • Partager sur Facebook
      • Partager sur Twitter
        6 novembre 2008 à 14:30:48

        Merci pour ta reponse, mais je l avais deja essayé.
        En fait j'aimerais dans mon prgramme permettre a l utilisateur de changer de fond d ecran syr programme.

        Je t envoie mon code pour que cela soit plus clair pour toi:
        menuChangerImg.addActionListener(new ActionListener(){
        		
        			  JFileChooser parcourrir = new JFileChooser();
        			  
        			  public void actionPerformed(ActionEvent  g){
        				  
        					 
        					 int information = JOptionPane.showConfirmDialog(fenetre,parcourrir,"Modifiez une image",
        		   						JOptionPane.OK_CANCEL_OPTION,JOptionPane.PLAIN_MESSAGE);
        					 
        					if(information==JOptionPane.OK_OPTION){
        						
        					         String urlimage2= String.valueOf(parcourrir.getSelectedFile()) ;
        					         
        					         		
        					         urlimage2 = urlimage2.replaceAll("\\", "/"); 
                                     urlimage=urlimage2;
                                     System.out.println(urlimage);
                                     JLabel image = new JLabel( new ImageIcon(urlimage));
                                    
                                    panneauImage.setLayout(bl2);
                             	    panneauImage.add(image,bl2.SOUTH);
                             	    panneau.add(panneauImage);
                             		panneau.setLayout(gl);
        					}
        				  
        			  }
        		  });
        


        • Partager sur Facebook
        • Partager sur Twitter
          6 novembre 2008 à 14:35:31

          Pourquoi tu remplace les \ par des / alors

          sous Windows ce sont les \ qui servent de séparateurs de fichiers, alors il faut les laisser.

          Ca pose un problème pour ton ImageIcon ?
          • Partager sur Facebook
          • Partager sur Twitter
            6 novembre 2008 à 14:49:36

            Voila comment j affiche mon image:

            String urlimage ="C:/Users/Pierre-Alexandre/workspace/GestionInstrument/src/musique3.jpg";
             JLabel image = new JLabel(new ImageIcon(urlimage));
            
             panneauImage.add(image);
             panneau.add(panneauImage);
            


            Effectivement, sous windows, le chemin de l'image quand je clique droit sur mon image et que je fait 'Propriétés' est:

            C:\Users\Pierre-Alexandre\workspace\GestionInstrument\src\musique3.jpg

            Donc logiquement, c est cette adresse la que je devrait mettre dans ma variable 'urlimage'.
            Le soucil c'est que eclipse me souligne tout le contenu de ma variable en rouge (en signe d'erreur).
            Donc je remplace tous les \ par / et la l'image s'affiche.
            Ca je peux le faire poiur l'image affichée par default.
            Mais si l'utilisateur veut changer l'image, je dois remplacer l'ancienne adresse de l'image par celle correspondant à l'image que l'utilisateur aura choisit grace a 'JFileChooser()'.

            Ainsi, je recupere cette adresse grace à
            String urlimage2= String.valueOf(parcourrir.getSelectedFile()) ;
            
            .

            Cette fonction me retourne donc l'adresse avec des \ et donc pour pouvoir afficher l'image, je dois remplacer les \ par des /.

            Peut-être existe-t'il une solution plus simple, si oui je te remercie d'avance pour ton aide.


            • Partager sur Facebook
            • Partager sur Twitter
              6 novembre 2008 à 15:05:08

              Non en fait le probleme c'est lorsque tu écrit ton adresse directement
              l'antislash est un caractère d'échapement

              on l'utilise pour faire des truc comme \n \t ou \" dans des chaines. Alors evidement si tu le met devant n'importe quelle lettre eclipse devient fou. tu doit aussi l'échapper :
              "C:\\Users\\Pierre-Alexandre\\workspace\\GestionInstrument\\src\\musique3.jpg"
              • Partager sur Facebook
              • Partager sur Twitter
                6 novembre 2008 à 15:16:39

                Merci beaucoup, ta solution fonctionne a merveille, la nouvelle image est bien chargee en fond d ecran. Bon le probleme (le nouveau!) reside maintenant dans le fait qu'il ne remplace pas l'image par la nouvelle, mais qu'il met la nouvelle derriere l'ancienne, et ceci autant de fois que je remplace mon image.

                Par exemple: image par default

                utilisateur change image

                image par default=>nouvelle image1

                utilisateur change encore image

                image par default=>nouvelimage1=>nouvelle image2

                etc...

                Je vais essayer de trouver l erreur, ca ne doit pas etre bien compliqué.
                Je te remercie encore pour ton aide, je te souhaite une exellente journée.

                Pierre-Alexandre.
                • Partager sur Facebook
                • Partager sur Twitter
                  6 novembre 2008 à 17:47:11

                  Au cas où, la bonne solution pour remplacer des \ en / aurait été :
                  String s2 = s1.replace('\\', '/');
                  Pour votre culture : replace(char,char) ou replace(String,String)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 novembre 2008 à 9:47:11

                    salut,

                    pour ton nouveau probleme tu ce que tu peux faire c'est garder tout le temps le meme JLabel et faire label.setIcon(new ImageIcon(...))
                    • Partager sur Facebook
                    • Partager sur Twitter

                    ReplaceAll() en JAVA

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown