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

Java Discussion :

Probleme utilisation replaceAll


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1
    Par défaut Probleme utilisation replaceAll
    Bonjour,

    J'ai un problème lors de l'utilisation de la méthode replaceAll de la classe String. Je souhaite parcourir un fichier pour remplacer un mot (maladie) par un autre (par exemple "cancer"). Mon programme parcourt bien le fichier et copie au fur et à mesure les lignes du fichier mais il ne remplace pas le mot voulu. Je me retrouve donc avec un nouveau fichier totalement identique au premier..

    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
    18
    19
    20
     
            File file = new File("test.grf");
    	File file2 = new File("test2.grf");
    	FileReader fr;
    	FileWriter fw;
    	BufferedReader buff;
    	try {
    	  fr = new FileReader(file);
    	  fw = new FileWriter(file2);
    	  buff = new BufferedReader(fr);
    	  String ligne;
    	  do{
    	    ligne = buff.readLine();
    		ligne = ligne.replaceAll("maladie","cancer");
    		fw.write(ligne);
    	  }while(buff.ready());
    	  fw.close();
    	} catch (IOException e){
    	  e.printStackTrace();
    	}
    En essayant un simple replace pour un caractère, le remplacement a bien lieu.

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Attention replaceAll() ne remplace directement pas une chaine de caractère normale mais une chaine de caractère représentant une expression régulière.

    Si tu veux simplement remplacer une chaine de caractère par une autre, c'est bien replace() qu'il faut utiliser et pas replaceAll(). Depuis java 1.4, cela mache aussi bien pour les caractères seul que pour les chaines de caractère.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 885
    Par défaut
    Et si replaceAll est vraiment nécessaire, tu peux toujours l'associer à Matcher.quoteReplacement(String) pour avoir la représentation littérale plutôt qu'une regexp à interpréter

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Malgré tout le replaceAll() devrait marcher...

    Par contre ton code est à revoir :
    • Pas de try/finally pour fermer les fichiers...
    • Une boucle while incorrect. Tu devrais plutôt te baser sur le retour de la méthode readLine() que sur ready() qui n'est pas "sûr" :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
       while ( (ligne = buff.readLine()) != null) {
          ...
      }


    a++

Discussions similaires

  1. [DLL]Probleme utilisation DLL
    Par bubulle63 dans le forum Windows
    Réponses: 4
    Dernier message: 07/09/2006, 13h35
  2. probleme utilisation fonction split
    Par Lnmex dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/07/2006, 16h40
  3. Probleme String replaceAll
    Par viscere dans le forum Langage
    Réponses: 13
    Dernier message: 03/07/2006, 09h22
  4. probleme utilisation de iis
    Par seb833434 dans le forum IIS
    Réponses: 2
    Dernier message: 15/06/2006, 17h19
  5. Probleme utilisation d'Objets managé grace a gcroot
    Par pepefourras dans le forum MFC
    Réponses: 4
    Dernier message: 16/05/2006, 00h26

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