Rechercher : dans
Par :

[java] remplacer une partie du texte

Dernière réponse le 31 mar 2005 à 11:43:49 jerome, le 30 mar 2005 à 22:32:12 
 Signaler ce message aux modérateurs

Bonjour,

comment faire pour remplacer une partie du texte située dans un fichier ?

Exemple :
le fichier "toto.txt" contient le mot "bonjour" que je souhaite remplacer par "bonsoir".
J'ai réussi à lire le texte ligne par ligne et à faire une recherche du mot "bonjour". Une fois ce mot trouvé, comment le remplacer ?
Faut-il créer un nouveau fichier et tout copier ? ou alors peut-on remplacer directement le texte sur le fichier existant ?

Merci d'avance,
Jérôme

Configuration: Java j2sdk 1.4.2

1

maily, le 31 mar 2005 à 09:57:27

Bonjour!

Après avoir lu ta ligne, qu'en fais tu?
Je pense qu'il faut que tu récupère tout le contenu de ton fichier et que tu le modifies dans ton java. Après, tu écris dans le même fichier le contenu modifier.

Maily
Ragondin, va au coin!

Répondre à maily

2

jerome, le 31 mar 2005 à 10:52:42

Bonjour,

je ne veux pas modifier tout le contenu mais seulement une partie.
Lorsque je lis une ligne, je recherche dans cette ligne le texte "bonjour".
2 cas se présentent :
- soit le texte n'y est pas et je passe à la ligne suivante.
- soit il y est et je veux le remplacer par "bonsoir" puis continuer la recherche.

Mon problème est de transformer "bonjour" en "bonsoir".
Quelle est la syntaxe pour réécrire exactement à la place du mot "bonjour" (je pense qu'il faut d'abord supprimer le mot puis écrire mais je n'y arrive pas) ?

J'espère avoir été plus clair.
Merci d'avance.

Répondre à jerome

3

maily, le 31 mar 2005 à 10:55:34

Tu utilise la class String?

Et bien, dans la javadoc, j'ai trouvé ça:

public String replaceAll(String regex,
                         String replacement)

    Replaces each substring of this string that matches the given regular expression with the given replacement.

    An invocation of this method of the form str.replaceAll(regex, repl) yields exactly the same result as the expression 
--

Maily
Ragondin, va au coin!

Répondre à maily

4

jerome, le 31 mar 2005 à 11:02:43

Merci beaucoup !
je crois que ca devrait aller avec ca.
je savais que j'avais déjà vu quelque chose de ce genre là mais je n'ai pas pensé à regarder dans la classe String !

a+
jerome

Répondre à jerome

5

maily, le 31 mar 2005 à 11:04:37

Sincèrement, pour aller plus vite et éviter de lire ligne par ligne, ce qui est assez couteux, récupère tout, fait un replaceAll et réinsère le tout!
:) Maily
Plus ça rate, et plus ça a de chance que ça marche.

Répondre à maily

6

jerome, le 31 mar 2005 à 11:19:38

Qu'appelles-tu "récupérer tout" ?
comment je fais exactement à partir d'unfichier sur mon disque dur ?

merci

Répondre à jerome

7

maily, le 31 mar 2005 à 11:28:00

Qu'utilise tu comme objet pour lire ligne par ligne ton fichier?
Maily,
Plus ça rate, et plus ça a de chance que ça marche.

Répondre à maily

8

jerome, le 31 mar 2005 à 11:32:06

Voici mon code :

/** je crée un flux entrant sur mon fichier */
BufferedReader in = new BufferedReader(new FileReader(fichier));

String ligne;
/** tant qu'il y a des lignes */
while ((ligne = in.readLine()) != null) {
/** je fais mon traitement */
}

Répondre à jerome

9

maily, le 31 mar 2005 à 11:36:16

Je ne connaissais pas ces objets!
Oublie ma remarque, c'est la manière la plus simple que tu as fait.

D'habitude, je passais par des FileInputStream et des FileOutputStream, c'est pour ça! Maily,
Plus ça rate, et plus ça a de chance que ça marche.

Répondre à maily

10

 jerome, le 31 mar 2005 à 11:43:49

En fait, FileReader et FileWriter , c'est la même chose que FileInputStream et FileOutputStream mais c'est un peu plus simple à gérer lorsqu'on traite des flux de caractères.

Merci de ton aide en tout cas.

Répondre à jerome
Collection CommentÇaMarche.net