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 :

Exclure l'apostrophe d'un compteur de mots


Sujet :

JavaScript

  1. #1
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut Exclure l'apostrophe d'un compteur de mots
    Bonjour,

    J'ai un petit compteur de mots qui fonctionne avec JS, et qui excue les balises HTML.
    Je me suis aperçu en revanche qu'il prend en compte les apostrophes, contrairement aux traitements de texte.
    Par exemple, avec Word ou équivalent : l'appel --> 1 mot. Mon compteur en compte 2.
    Je n'arrive pas à faire cette exclusion de l'apostrophe. J'ai essayé la suppression de l'apostrophe avec chaine.replace("'", "" ), mais cela n'est effectif que sur la première expression trouvée.

    Voici le code inclu dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    reg=new RegExp("<.[^<>]*>", "gi" );
    chaine=chaine.replace(reg, "" );
    var exp=new RegExp("[a-zA-Z0-9éèêëàáâäóòôöíìîïçÉÈÊËÀÁÂÄÒÓÔÖÌÍÎÏÇ-]+","g");
    var tabNom=chaine.match(exp);
    if (tabNom==null) {post.compte.value = "0 mot";}
    Avez-vous une piste à me proposer ? Merci d'avance.
    Le mieux n'est pas forcément l'ennemi du bien.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    mais cela n'est effectif que sur la première expression trouvée.
    tu as oublié le g ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    en fait, je viens d'y arriver en ajoutant ces 2 lignes, mais je ne suis pas certain que ce soit très propre et optimal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	reg2=new RegExp("'", "gi" );
    	chaine=chaine.replace(reg2, "" );
    Le mieux n'est pas forcément l'ennemi du bien.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Si tu le remplaces par rien, le mot apostrophé devient un seul mot au lieu de deux ...

    "l'apostrophe" devient "lapostrophe"

    le insensitive ne sert pas à grand chose il n'existe pas d'apostrophe Majsucule ...

    Mais sinon le code de remplacement est correct, tout dépend à quel moment tu l'intercales dans ton code ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Si tu le remplaces par rien, le mot apostrophé devient un seul mot au lieu de deux
    Oui, c'était l'idée, je ne sais pas s'il y a une fonction plus propre pour éluder le signe apostrophe.

    le insensitive ne sert pas à grand chose il n'existe pas d'apostrophe Majsucule
    En effet, j'enlève de "i" de ce pas ! Merci !
    Le mieux n'est pas forcément l'ennemi du bien.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    chaine="On sait depuis longtemps que travailler avec du texte lisible et contenant du sens est source de distractions, et empêche de se concentrer sur la mise en page elle-même. L'avantage du Lorem Ipsum sur un texte générique comme 'Du texte. Du texte. Du texte.' est qu'il possède une distribution de lettres plus ou moins normale, et en tout cas comparable avec celle du français standard. De nombreuses suites logicielles de mise en page ou éditeurs de sites Web ont fait du Lorem Ipsum leur faux texte par défaut, et une recherche pour 'Lorem Ipsum' vous conduira vers de nombreux sites qui n'en sont encore qu'à leur phase de construction. Plusieurs versions sont apparues avec le temps, parfois par accident, souvent intentionnellement (histoire d'y rajouter de petits clins d'oeil, voire des phrases embarassantes).";
    reg=new RegExp("<.[^<>]*>", "gi" );
    chaine=chaine.replace(reg, "" );
     
    chaine=chaine.replace(/'/g,"");
    console.log(chaine);
    var exp=new RegExp("[a-zA-Z0-9éèêëàáâäóòôöíìîïçÉÈÊËÀÁÂÄÒÓÔÖÌÍÎÏÇ-]+","g");
    var tabNom=chaine.match(exp);
    console.log(tabNom.length);
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Super, merci !

    Pendant que j'y suis, j'essaie d'incrémenter un seul input de comptage mais en comptant les mots de deux textarea.
    Le code du JS est le même (pour l'instant), je n'arrive pas trop à récupérer les 2 données pour les assembler en une.

    Voici le code du formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <textarea name='chapo' id='chapo' onkeyup='Compter(this.form.chapo.value, this.form)' onfocus='Compter(this.form.chapo.value, this.form)'></textarea>
    <textarea name='texte' id='texte' onkeyup='Compter(this.form.texte.value, this.form)' onfocus='Compter(this.form.texte.value, this.form)'></textarea>
    <input type='text' name='compte' value='' size='10' class='count' readonly />

    Pour l'instant, le input donne le nombre de mots du chapo ou du texte, selon que l'on clique sur l'un ou l'autre des textarea. Une petite idée ?
    Le mieux n'est pas forcément l'ennemi du bien.

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 057
    Points : 44 589
    Points
    44 589
    Par défaut
    Bonjour,
    est-ce qu'un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const nbMots = chaine.split("");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const nbMots = chaine.split(/\s/g);
    ne suffirait pas ?

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    J'aurais plutot tenté un split sur \b
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Merci à vous deux, en effet const tabNom = chaine.split(/\s/g); est une solution plus courte pour compter les mots en évitant les balises HTML et les apostrophes, mais elle compte certaines ponctuations, comme le point d'exclamation.
    Le mieux n'est pas forcément l'ennemi du bien.

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 057
    Points : 44 589
    Points
    44 589
    Par défaut
    mais elle compte certaines ponctuations, comme le point d'exclamation.
    Dans ce cas il faut toutes les supprimer avant le split(), par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // supprime punctuation (and symbols)
    chaine = chaine.replace(/[!"\#$%&'()*+,\-./:;<=>?@\[\\\]^_‘{|}~]/g,"");
    // découpage suivant espace(s)
    nbMots = chaine.split(/\s+/g);
    à voir si il n'y en a pas d'autres à ajouter, mais CosmoKnacki passera peut-être par là !

    nota : sur ce coup la coloration du code a du mal

  12. #12
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    J'avoue que j'aime moins cette solution, qui incrémente un mot à chaque nouvel espace. Au final, on obtient un bon résultat, mais à l'écriture, c'est un peu bizarre.
    Merci toutefois pour cette suggestion.
    Le mieux n'est pas forcément l'ennemi du bien.

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

Discussions similaires

  1. un compteur de mots sur CKeditor
    Par shelko dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/10/2012, 09h05
  2. [Débutant] Compteur de mots
    Par olivier1209 dans le forum Langage
    Réponses: 1
    Dernier message: 27/02/2010, 23h40
  3. compteur de mots pour traitement de texte
    Par kimz dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 22/09/2008, 16h12
  4. Réponses: 1
    Dernier message: 14/12/2007, 09h36
  5. [VBA-W]Un compteur de mots dans Word
    Par QAPi dans le forum VBA Word
    Réponses: 3
    Dernier message: 30/03/2006, 13h49

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