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 :

[Javascript][Algorithme] Mise en évidence de mot clé


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut [Javascript][Algorithme] Mise en évidence de mot clé
    Bonjour,

    Dans une base de donnée, j'ai des mot clés avec des descriptions et des titres.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    recherche : ceci est un site de recherche
    site : ce site recherche des mots
    Si j'ai un texte comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    google est un site de moteur de recherche.
    il regarde le 1e mot dans la bdd et remplace recherche <span id ="..">ceci est un site de recherche</span> car l'expression régulière n'a pas trouvé <span id = '...'>
    Ensuite 2e mot de la base de donnée : site. Mon expression rég n'a pas changé donc il faut mettre cette fois, le résultat de regex sera vrai et donc aucun remplacement ne sera fait.

    Comment faire pour que la phrase itiniale devienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    google est un <span> ce site recherche des mots</span> de moteur  de <span id ..">ceci est un site de recherche</span>
    Le problème est que regex ne parse pas tout les résultats et qu il s'arrete des qu il a trouvé que le chaine correspondant à l'expression recherchée...

    Merci

  2. #2
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Pourriez-vous être un brin plus clair ? Je n'ai pas vraiment compris votre question ...
    Quelle est la fonction javascript que vous utilisez pour parser ?

  3. #3
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Tout dépend de la méthode utilisée en effet. Pour effectuer des remplacements, String.replace() est conseillée. On obtient les résultats souhaités en paramétrant correctement la regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var inStr = "Google est un site de moteur de recherche qui recherche des sites ne contenant pas d'autres moteurs de recherche mais pointant parfois sur d'autres sites quand même encore que tout cela n'avance généralement guère nos recherches mais la plupart des sites s'en fichent et Google aussi !";
     
    // Remplacer toutes les occurrences de "recherche" par "<span>toto RECHERCHE titi</span>""
    // (regex simplifiée, pas de contrôle sur <span>
    // String.replace( regex, remplacement )
    var outStr = inStr.replace( /recherche/gi, "<span>toto RECHERCHE titi</span>" );
    NB : le flag "i" est là pour "case insensitive" ; l'enlever pour garder la sensibilité à la casse ; le flag "g" est obligatoire pour une substitution globale.

  4. #4
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    Alors pour parser le texte, j'utilisais la méthode test de la classe Regexp.

    Si test me retournait 'faux', je remplacait le texte a l'aide de la méthode replace de la classe String. Dans le cas contraire, je ne fais rien.

    Le problème est que, après le premier mot remplacé, test retournera "vrai" car il va trouver l'occurence de <span id = ...>...</span> et donc il ne remplacera pas le 2e mot clé par ce qu il faut.

    Merci

  5. #5
    Membre éclairé Avatar de Sheriff
    Inscrit en
    Octobre 2004
    Messages
    608
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 608
    Points : 718
    Points
    718
    Par défaut
    salut
    à mon avis tu ne devrais pas te soucier de trouver ou non le string à remplacer...
    la méthode replace() se contente de remplacer les ocurrences, rien de plus.
    au lieu de mettre ta variable à vrai tu peux juste l'incrémenter...
    si à la fin elle est toujours à zéro c'est qu'il n'y a pas eu de changement
    @+
    Que votre situation soit bonne ou mauvaise, cela va changer...

  6. #6
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    re

    bon j'ai encore un petit soucis pour ma fonction ...

    ca doit venir de ma syntaxe :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re = new RegExp("("+reg+")", "gi");
    reg serait mon mon clé.

    Le problème est que, si mon mot clé est formation, il va me trouver "information" aussi. je voudrais qu il me matche exactement formation.

    je pensais que ce serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re = new RegExp("/\b("+reg+")/\b", "gi");
    mais ca marche pas... ce serait quoi la syntaxe exacte? :s

  7. #7
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933

  8. #8
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    lol ... En effet

    Autre question ... vs connaissez une méthode comme Replace mais on l'on peut limiter le nombre de remplacement ds le texte?

    Ce que j'entends par la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mot clé : sport
    Ce sport est le sport national Québec, sport national de la Chine, sport le plus populaire en France,...
    Je voudrais une fonction où je pourrais, en ayant tout le texte, remplacer sport par jeu mais juste les x premières itéréations du mot clé.
    PAr exemple, si je veux remplacer que les 2 premiers, ca ferait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ce jeu est le jeu national Québec, sport national de la Chine, sport le plus populaire en France,...

  9. #9
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    String.replace() ne fait de substitution globale que si l'attribut "g" est spécifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strOut = strIn.replace( /\bsport\b/g, "jeu");
    Sans cet attribut, seule la première occurrence trouvée pour la regex est remplacée. En plaçant l'appel dans une boucle ad hoc, tu devrais obtenir les résultats désirés.

Discussions similaires

  1. [Plugin] Mise en évidence des (parenthèse) et {accolade}
    Par LLaumgui dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 24/06/2013, 09h28
  2. [MySQL] mise en évidence de mots clés
    Par Junior_jef dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/08/2008, 16h13
  3. [Word] Comment mettre en évidence des mots dans un document ?
    Par ecocentric dans le forum Framework .NET
    Réponses: 1
    Dernier message: 03/08/2006, 16h31
  4. Mise en évidence des discussions avec nouveaux messages
    Par Kcirtap dans le forum Evolutions du club
    Réponses: 16
    Dernier message: 20/04/2006, 17h55
  5. Mise en évidence des différences entre 2 textes
    Par Dranor dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 19/07/2005, 22h53

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