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

Langage Java Discussion :

Compter caractere et reformater texte


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Par défaut Compter caractere et reformater texte
    Bonjour,

    Je programme en java et j'aimerais faire la chose suivante :

    recuperer les caracteres d'un fichier texte par exemple, compter les nombre de caractere par ligne et si il y'en plus que 50 sur une meme ligne, faire un retour à la ligne et copier le tout dans mon nouveau fichier .txt. Je ne veux biensur pas couper un mot (donc il faut faire une exception?)...

    Je sais recuperer les caracteres d'un fichier (filereader bufferedreader etc ...)
    a moins que vous n'ayez une methode meilleur (print ?)
    Mais je ne sais pas du tout comment les traiter pour compter et couper les phrases trop longues etc ... Alors j'attends avec impatience votre aide !

    Et merci beaucoup par avance

    PS: En gros c'est un sorte de reformatage de texte dans un autre fichier créé.

  2. #2
    Membre éclairé Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Par défaut split ou stringTokenizer
    Salut,

    Tu peux découper les lignes de ton fichier texte avec split ou stringTokenizer.
    Et au fur à mesure, tu concatènes les différentes token tant que la longueur de la chaine concaténée ne dépasse pas 50...

    A+

  3. #3
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    Voici ma vision des choses :
    1) lire le fichier ligne par ligne. BufferedReader.readline()
    2) pour chaque ligne
    Si le nombre de caractères < 50 copie de la ligne dans le fichier de sortie
    Sinon
    2-1) decoupage de la ligne en mots String.split()
    2-2) reconstruction d'une ligne mot par mot tant que taille < 50
    2-3) ecriture de la ligne dans le fichier de sortie puis (retour à 2-2).
    3) un fois fini, flush du fichier de sortie et close des fichiers d'entrée et de sortie.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Par défaut
    Ok merci de vos reponse je teste ca au plus tard demain ou samedi et je donne des news

    Merci encore

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Par défaut
    Bonjour, alors j'ai un probleme ... j'arrive pas a ecrire le code permettant de decouper en 50 caractere, voici le code que je suis en train d'ecrire : (copie d'un fichier vers un autre fichier)

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package projet1;
     
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
     
    public class FichierVersFichier {
     
    	public static void main(String args[]){
    		BufferedReader br ;
    		BufferedWriter bw ;
    		String ligne;
     
    		File entree = new File("fichierEntree.txt");
    		File sortie = new File("fichierSortie.txt");
     
    		if(entree.exists()){
    			try
    			{
    				br = new BufferedReader(new FileReader(entree));//preparation du fichier d'entrée - Sera variable plus tard -
    				bw = new BufferedWriter(new FileWriter(sortie));//preparation du fichier de sortie
     
    				while(!(ligne=br.readLine()).equals(" "))
    				{
    					bw.write(ligne + "\n");
    				}
    				bw.close();
    				System.out.println("Opération terminée avec succès");
    			}
    			catch(IOException e)
    			{
    				System.err.println("Le fichier n'existe pas... Changez de source");
    			}
    		}
     
    	}
    }
    Probleme meme ça pour le moment ca marche pas ... (en gros j'ai crée un fichier "fichierEntree.txt" dans lequel jai ecris des chose, puis j'ai creer un fichierSortie.txt vide)
    Mais a l'execution rien ne se passe ... help plz ...

    Merci d'avance

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Par défaut
    si, il me mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.NullPointerException
    	at projet1.FichierVersFichier.main(FichierVersFichier.java:29)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Par défaut
    jarrive a transferer d'un fichier a l'autre !

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    package projet1;
     
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
     
    public class FichierVersFichier {
     
    	public static void main(String args[]){
    		BufferedReader br ;
    		BufferedWriter bw ;
    		String ligne;
     
    		File entree = new File("fichierEntree.txt");
    		File sortie = new File("fichierSortie.txt");
     
    		/*try
    		{*/
    			if(entree.exists())
    			{
    				try
    				{
    					br = new BufferedReader(new FileReader(entree));//preparation du fichier d'entrée - Sera variable plus tard -
    					bw = new BufferedWriter(new FileWriter(sortie));//preparation du fichier de sortie
     
    					while((ligne = br.readLine())!= null)
    					{
    						bw.write(ligne + "\n");
    						bw.flush();
    					}
     
    					bw.close();
    					br.close();
    					System.out.println("Opération terminée avec succès");
    				}
    				catch(IOException e)
    				{
    					System.err.println("Le fichier n'existe pas... Changez de source");
    				}
    			}
    		/*}
    		catch(NullPointerException e)
    		{
    			System.err.println("ERREUR");
    		}*/
    	}
    }
    Comment on limite a 50 caracteres par ligne now ?

    Merci encore

  8. #8
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    fnobb t'as donné l'algorithme pour le faire.

    Citation Envoyé par fnobb Voir le message
    Bonjour,

    2) pour chaque ligne
    Si le nombre de caractères < 50 copie de la ligne dans le fichier de sortie
    Sinon
    2-1) decoupage de la ligne en mots String.split()
    2-2) reconstruction d'une ligne mot par mot tant que taille < 50
    2-3) ecriture de la ligne dans le fichier de sortie puis (retour à 2-2).
    3) un fois fini, flush du fichier de sortie et close des fichiers d'entrée et de sortie.
    Le nombre de caractères c'est :

    Le découpage comme indiqué c'est split.

    reconstruction d'une ligne c'est '+' (pas optimisé, mais l'amélioration se fera dans un second temps).

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Par défaut
    Merci beaucoup, le length ... je savais pas ... lol

    Merci beaucoup a toi jsuis nul j'espere que ca va s'arranger lol

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Par défaut
    Bon désolé mais je vois pas du tout comment faire pour reecrire une phrase coupé en la limitant a 50 caractere vu qu'apres un split ce sont des mots que j'obtiens ... -_- je sais j'ai du mal ...

    Je fais bien mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(ligne.length() < 50)
    {
     bw.write(ligne + "\n");
    }
    mais pour le else je vois pas du tout comment le construire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    else
    {
     ligne.split(" ");
     while(ligne.length() < 50){
     bw.write(ligne);
    }
    ??

    }

  11. #11
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Faudrait peut être récupérer le résultat du split, qui, comme tu le sais retourne la liste des mots.

    Ensuite ajouter dans une ligne temporaire les mots 1 par 1 tant que la taille de cette ligne ne dépasse pas 50. Il faut donc faire une boucle sur les mots.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 06/11/2008, 15h45
  2. nombre caractere zone de texte
    Par tomtom02000 dans le forum IHM
    Réponses: 1
    Dernier message: 10/10/2007, 22h41
  3. [langage] Compter des chaines de caractères
    Par julfra dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2004, 18h42
  4. [langage] compter des caracteres dans une chaine
    Par louisis dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 23h39
  5. Réponses: 2
    Dernier message: 02/03/2004, 20h38

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