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

JavaScript Discussion :

Calcul du nombre de lignes dans un fichier texte en JavaScript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Par défaut Calcul du nombre de lignes dans un fichier texte en JavaScript
    Bonjour,

    Après avoir résolu le problème de lecture des fichiers en javascript, je voudrais récupérer chaque ligne à part avec une fonction ReadLine, comme celle de Java, j'ai commencé en première étape par compter le nombre de ligne, normalement ça marche, mais, une alerte indiquant que mon script ne répond pas est affiché, et dans la console d'erreur, j'ai une erreur au niveau du script StrinTokenizer.js, comme suit:" this.str has no propreties", donc si vous voulez bien m'aider à résoudre ce problème, Merci bien
    çi dessous vous trouverez mon script, StringTokenizer.js et ma page html qui fait appel à ce script afin de calculer le nombre de ligne dans mon fichier texte:

    StringTokenizer.js
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    function StringTokenizer (str, delim) {
       this.str = str;
       this.delim = delim;
     
       this.getTokens = getTokens;
       this.hasMoreTokens = hasMoreTokens;
       this.nextToken = nextToken;
       this.countTokens = countTokens;
     
       this.tokens = this.getTokens();
       this.actuel = 0;
     }
    function getTokens() {
       var tokens = new Array();
       var nt;
       var st= new String();
       st=this.str;
        if (st.indexOf(this.delim) < 0) {
     
        // if (this.str.indexOf(this.delim) < 0) {
         tokens[0] = this.str;
         return tokens;
       }
     
       start = 0;
       end = this.str.indexOf(this.delim, start);
     
       var i = 0;
     
       while (this.str.length - start >= 1) {
         nt = this.str.slice(start, end);
         start = end + 1;
         if (this.str.indexOf (this.delim, start + 1) < 0) 
           end = this.str.length;
         else
           end = this.str.indexOf (this.delim, start + 1);
     
         nt = trim (nt);
     
         while (nt.slice(0, this.delim.length) == this.delim) 
           nt = nt.slice(this.delim.length);
     
         nt = trim(nt);
     
         if (nt == "") continue;
         tokens[i++] = nt;
       }
     
       return tokens;
     }
    function trim (strToTrim) {
       return(strToTrim.replace(/^\s+|\s+$/g, ''));
     }
    function nextToken() {
       if (this.actuel >= this.tokens.length)
         return null;
       else {
         var r = this.tokens[this.actuel];
         this.actuel++;
         return r;
       }
     }
    function hasMoreTokens() {
       return this.actuel < this.tokens.length;
     }
    function countTokens(){
       return this.tokens.length;
     }
    CalculNbreLigne.html

    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
    <html>
    <title>FONCTION QUI CALCULE LE NBRE DE LIGNE DANS LE FICHIER TEXTE</title>
    <head><script language='JavaScript' src='js/SringTokenizerVendredi.js' ></script>
    </head>
    <body><script>
     
            var xhr_object = null; 
     
    	if(window.XMLHttpRequest) // Firefox 
    	   xhr_object = new XMLHttpRequest(); 
    	else if(window.ActiveXObject) // Internet Explorer 
    	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	  // return; 
    	} 
     
    	xhr_object.open("GET", "foo.txt", true); 
     
    	xhr_object.onreadystatechange = function() { 
    	   if(xhr_object.readyState == 4) 
     
             var g=xhr_object.responseText;
             var i=0;
     
    	 tnz = new StringTokenizer(g,"\n");
     
    	 while(tnz.hasMoreTokens()){
    		i++;
    	 }
     
            document.write("Nombre de ligne dans le fichier foo.txt est:"+i);
     
    	} 
     
    	xhr_object.send(null); 
    </script>
    </body>
    </html>

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Si en parlant de lignes, tu parles bien de retours chariot, tu peux utiliser :
    qui te renvoie un tableau contenant chaque ligne de ton texte
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Par défaut
    Merci Bovino, peut etre que je me suis trompé dans la syntaxe, mais ça ne marche pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var texte=xhr_object.responseText;
    	 var tab_ligne=new Array();
             tab_ligne= texte.split('\n');
    document.write("Nombre de ligne dans le fichier foo.txt est:"+ tab_ligne.length);

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Essaye peut-être avec \r ...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Non, ça ne marchera pas non plus, \n et \r sont des codes js, si tu récupères responseText, il faut prendre en compte le code retour chariot ASCII je pense...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Par défaut
    en fait le problème n'est pas dans /r ou /n, j'ai déjà travaillé avec /n et c'est bon de ce coté, mais ce que j'ai affiché comme erreur dans la console d'erreur, c'est tab_ligne is not defined, c'est a dire peut être, une mauvaise déclaration ou affectation, je ne sais pas.

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

Discussions similaires

  1. Compter le nombre de ligne dans un fichier text
    Par nekcorp dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2018, 14h10
  2. nombre de lignes dans un fichier texte
    Par fv18100 dans le forum Général Python
    Réponses: 8
    Dernier message: 03/11/2013, 16h10
  3. [VBS] Fonction qui compte le nombre de lignes dans un fichier texte
    Par ProgElecT dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 03/05/2012, 13h48
  4. [Fichier] Nombre de ligne dans un fichier texte
    Par NewSer dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2004, 16h58
  5. Réponses: 2
    Dernier message: 02/03/2004, 19h38

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