salut tout le monde,
dans un fichier texte, j'aimerai savoir comment rechercher une chaine de caracteres specifique puis la remplacer par une autre.
merci
salut tout le monde,
dans un fichier texte, j'aimerai savoir comment rechercher une chaine de caracteres specifique puis la remplacer par une autre.
merci
en récupérant ton fichier puis en utilisant replaceAll de String qui te permet de remplacer des mots par des autres (il y a un exemple dans la FAQ)
La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique
je crois que tu est obligé de parcourir le fichier pour remplir une variable (un stringBuffer) et de faire un replaceAll dessus.
mais bon il y a peut etre plus propre/efficace ...
[EDIT] ha pas assez rapide ...
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"
Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
à mon avis, le plus rapide pourrait être :
- d'ouvrir un flux de fichier (on va l'appeler 'r') depuis le fichier que tu veux lire
- d'ouvrir un flux de fichier (on va l'appeler 'w') vers 1 nouveau fichier (tester si existant -> effacer puis recréer)
de déclarer 1 String 's' qui prend la première valeur lue de r
et enfin :
tant que s non null {
écrire s.replace("chaine à remplacer", "chaine à inscrire") dans w
lire s dans r
}
Voilà .. t'as l'algo
Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
Rien ne sert de partir à point, il vaut mieux courir .
histoire d'avoir plusieurs points de vue, moi j'aurais plutot vu un truc style :
avec les exceptions qui vont bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 BufferedReader in=new BufferedReader(new FileReader("source")); StringBuffer sb = new StringBuffer(); while((ligne=in.readLine())!=null){ sb.append(ligne) } String clean = sb.toString().replaceAll("Recherché","Remplacé par"); in.reset(); // à voir si c'est suffisant in.write(clean); in.close();
Apres ça dépend de ce que tu veux remplacer. Si c'est juste des caractères, la solution de neptus est bonne. Apres si c'est des phrases (et donc sur plusieurs lignes) mieux vaut travailler sur le texte dans sa globalité.
Apres, mon idée est surement moins rapide que celle de Neptus. Peut etre un mis des 2 te comblerait ...
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"
Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
écrire dans 1 reader ??
original ... mais faux il me semble.
Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
Rien ne sert de partir à point, il vaut mieux courir .
oui effectivement, j'ai pas trop réfléchi ...
mais bon ... c'est pas vraiment important pour la compréhension de l'algo je pense
ATTENTION ! NE PAS COPIER/COLLER ET METTRE EN PRODUCTION
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"
Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
Et voila !
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
21
22
23
24
25
26
27
28
29
30 public static boolean readReplace(String fileName, String oldPattern, String replPattern, int lineNumber) { String line; StringBuffer sb = new StringBuffer(); int nbLinesRead = 0; try { FileInputStream fis = new FileInputStream(fileName); BufferedReader reader = new BufferedReader(new InputStreamReader( fis)); while ((line = reader.readLine()) != null) { nbLinesRead++; line = line.toLowerCase(); if (nbLinesRead == lineNumber) { line = line.replaceFirst(oldPattern.toLowerCase(), replPattern); } sb.append(line + "\n"); } reader.close(); BufferedWriter out = new BufferedWriter(new FileWriter(fileName)); out.write(sb.toString()); out.close(); } catch (Exception e) { return false; } return true; }
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
c'est une autre façon de voir le problème :
ton code impose deux contraintes importantes :
1 - il faut connaître la ligne (n°) à modifier (si il n'y en a qu'une
2 - on considère que la chaine à remplacer dans le fichier ne contient pas de majuscule !!!!
un peu tordu ton code .. enfin tout dépend du besoin ....
duorade, si tu pouvais éclaircir le terme "rechercher une chaine de caracteres specifique" : tu entend par là une seule chaîne dans le fichier (présente à une seule ligne) ou alors toutes les instances de la chaîne recherchée ?
1 dernier truc : on est pas forcément là pour cracher du code : si il cherche par lui-même et qu'il trouve, la prochaine fois il s'en souviendra
(et ça nous permettra de ne pas à avoir à lui répéter )
Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
Rien ne sert de partir à point, il vaut mieux courir .
J'ai donné ce code comme je l'utilise, rien n'empêche de le modifier... Si t'as pas besoin de connaître le numéro de ligne, tu le vires, si tu ne veux pas utiliser la méthode toLowerCase, tu la vires. Le problème c'est qu'il faudra être plus précis sur l'input que tu passeras en paramètre...
J'avais cette méthode sous le coude, je m'en suis inspiré d'une trouvé sur le net, donc au final en cherchant bien il aurait bien finit par la trouver...
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
ben il l'a cherchée ici et il l'a finalement trouvée
Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
Rien ne sert de partir à point, il vaut mieux courir .
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager