Effectuer un retour à la ligne selon une chaine de caractères

Résolu/Fermé
brino1987 - 1 avril 2013 à 04:27
 brino1987 - 14 avril 2013 à 13:23
Bonjour tout le monde,
j'ai un fichier texte et j'aimerai découper ses chaines de caractères et faire un retour à la ligne selon une chaîne de caractères c à d je fais mon parcours et je lis mon fichier caractère par caractère et si je trouve mon chaine souhaité je déplace mon curseur au début de cette chaine et je fais un retour à la ligne..

a plus par exemple mon fichier contient le texte suivant:

ggggdgfgfghjhgfdfghjkkjuiyggggffddddddfgggggskqfhdsmlfhdsghsfdghfjgfjgjghkfjghgkgjfkgjggggkgjhkgjgkdfjfjdkjjdggggdhdsgdshgdshgdsh

mon fichier après traitement (je teste selon la chaine "gggg"):
ggggdgfgfghjhgfdfghjkkjuiy

ggggffddddddf

gggggskqfhdsmlfhdsghsfdghfjgfjgjghkfjghgkgjfkgj

ggggkgjhkgjgkdfjfjdkjjd

ggggdhdsgdshgdshgdsh


svp j'ai besoin de vos lumières et merci d'avance

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 avril 2013 à 09:07
Tu peux faire comme ça :

String str1 = "ggggdgfgfgh...";
String str2 = str1.replaceAll("gggg","\ngggg");
System.out.println(str2);

Et si tu tiens absolument à faire ça "caractère par caractère", tu devrais refaire la méthode replaceAll...
0
bonjour KX,
merci pour votre aide,
j'ai essayé avec ce qui tu me donnes mais le problème est qu'avec cette méthode

le contenu de mon fichier est réécrit à la fin de fichier. c à d le contenu est devient comme ça:

ggggdgfgfghjhgfdfghjkkjuiy
ggggffddddddf
gggggskqfhdsmlfhdsghsfdghfjgfjgjghkfjghgkgjfkgj
ggggkgjhkgjgkdfjfjdkjjd
ggggdhdsgdshgdshgdsh
ggggdgfgfghjhgfdfghjkkjuiyggggffddddddfgggggskqfhdsmlfhdsghsfdghfjgfjgjghkfjghgkgjfkgjggggkgjhkgjgkdfjfjdkjjdggggdhdsgdshgdshgdsh

est ce que tu peut encore m'aider svp
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
2 avril 2013 à 18:50
"le contenu est devient comme ça: "
Ça ressemble beaucoup au contenu que tu mettais en exemple hier non ?
0
je veux effacer cette répétition est ce que tu peux m'aider svp???
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
3 avril 2013 à 18:19
Tu veux effacer toutes les lignes qui commencent par gggg ? Je croyais que tu n'avais qu'une ligne et que tu voulais sauter à la ligne lorsque tu trouves gggg, mais si tu supprimes ces lignes là tu n'auras plus rien !

Explique un peu mieux ce que tu veux faire, avec un exemple complet avant / après, parce que là ce n'est pas clair du tout...
0
ok KX,
j'ai les données dans un fichier sont de cette forme:

ggggdgfgfghjhgfdfghjkkjuiyggggffddddddfgggggskqfhdsmlfhdsghsfdghfjgfjgjghkfjghgkgjfkgjggggkgjhkgjgkdfjfjdkjjdggggdhdsgdshgdshgdsh

je voudrai les rendre de cette forme:

ggggdgfgfghjhgfdfghjkkjuiy
ggggffddddddf
gggggskqfhdsmlfhdsghsfdghfjgfjgjghkfjghgkgjfkgj
ggggkgjhkgjgkdfjfjdkjjd
ggggdhdsgdshgdshgdsh

c à d je parcours mon fichier et si je trouves la chaine gggg je fais un retour à la ligne

clair ça ou nn??


et voilà mon code:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.StringTokenizer;


public class ReadFile{

public static void main(String[] args) throws IOException{

//Créer un nom de fichier basé sur la date et l'heure
//SimpleDateFormat filePattern = new SimpleDateFormat("ddMMyyyy_HHmm");
//String filename=filePattern.format(new Date(0)) + ".txt";
//ouvrir le fichier
File file=new File("C:\\eclipse\\Workspace\\AlertSnort.txt");
String filePath = "C:\\eclipse\\Workspace\\TotalAlert.txt";

if(file.exists()==true){
file.delete();
file.createNewFile();
}

try{

PrintStream printStream = new PrintStream(file);

System.setOut(printStream);
;
// Création du flux bufférisé sur un FileReader, immédiatement suivi par un
// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
// est correctement instancié (évite les NullPointerException)
BufferedReader buff = new BufferedReader(new FileReader(filePath));
StringBuffer ligne= new StringBuffer();



try {


String line;
int i=-1;
String car;
// Lecture du fichier ligne par ligne. Cette boucle se termine
// quand la méthode retourne la valeur null.
while ((line = buff.readLine()) != null&& i==-1) {
String str2 = line.replaceAll("gggg","\ngggg");
System.out.println(str2);
System.out.println(line);
//faites ici votre traitement
}

}
catch (FileNotFoundException e) {
e.printStackTrace();
}


buff.close();
printStream.close();



}

catch (FileNotFoundException e) {
e.printStackTrace();
}


}

}
0