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 :

[RegExp] Ajout de *


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre exp�riment�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Par d�faut [RegExp] Ajout de *
    Bonjour,
    je cherche � ajouter "*" � chaque mot (s�par� par un ou plusieurs espaces, tabulation...) d'une liste. Mais ne pas mettre d'�toile derri�re les mots qui sont entre guillemets.
    Donc
    Java ajax "internet explorer" firefox
    Devrait donner
    Java* ajax* "internet explorer" firefox*
    J'ai d�j� ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    function searchpad(searchtext)
    {
    	return(searchtext.replace(/\s+/gi, "* "));
    }
    Qui me remplace les espaces par "* "
    ce qui donne:
    * Java* ajax* "internet* explorer"* firefox*
    et ceci
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    function searchpad(searchtext)
    {
    	return(searchtext.replace(/".*"/g, "$$$"));
    }
    qui me remplace ce qui se trouve entre guillemets par "$$"
    ce qui donne
    Java ajax $$ firefox

    Mais je bloque l�.
    Avez-vous une id�e pour finaliser ? (il faudrait de regExp ne mette pas d'�toile au d�but, skip le contenu des guillemets et ne mette pas d'�toile apr�s la deuxi�me guillemet)
    Merci d'avance.

  2. #2
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par d�faut
    je te conseille de spliter ta chaine avec le caract�re guillemet et ensuite de n'appliquer la transformation qu'� la partie qui n'est pas entre guillemet

    un truc du genre

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function searchpad(searchtext) {
    var tableau = searchtext.split('"');
    var resultat = '';
    for(var i = 0; i < tableau.length; i++2) {
    tableau[i].replace(/\s+/gi, '* ');
    }
    for (var i = 0; i < tableau.length; i++) {
    resultat = resultat + tableau[i];
    }
    }

  3. #3
    Membre exp�riment�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Par d�faut
    Barsy, merci pour l'id�e.
    Je suis en train de la creuser.
    J'ai pour le moment ceci:
    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
    function searchpad(searchtext) 
    {
    	var tableau = searchtext.split('"');
    	var resultat = '';
    	for(var i = 0; i < tableau.length; i++) 
    	{
    		if(i%2 == 0)
    		{
    			tableau[i] = tableau[i].replace(/\s+/gi, '* ');
    		}
    		else
    		{
    			tableau[i] = "\""+tableau[i]+"\"";
    		}
    	}
    	for (var i = 0; i < tableau.length; i++) 
    	{
    		resultat = resultat + tableau[i];
    	}
    	return(resultat);
    }
    qui me donne :
    * Java* ajax* "internet explorer"* firefox
    Ce qui est d�j� mieux.
    Il ne me reste plus qu'� enlever "* " devant Java et firefox ainsi que rajouter "*" derri�re firefox.
    Avez-vous une proposition?
    Merci d'avance.

  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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    searchtext='internet   "firfox"   '
     
    alert(searchtext.replace(/(["])?\1\s /gi, "* " ));
    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
    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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    et pour pr�voir l'eventualit� d'un mot en fin de chaine avec ou sans guillements..

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    alert(searchtext.replace(/((["]?)\2\s+)|(([."])?\4)$/gi, "*  "));
    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 !

  6. #6
    Membre exp�riment�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Par d�faut
    Super !
    RegExp m��tonnera toujours�
    N�ayant pas voulu vous noyer avec des d�tails, je n�ai pas mis tout le contexte. Le voici :
    J�aimerai que le visiteur qui veut faire une recherche sur mon site ait comme r�ponse toutes le pages contenant les mots introduits (s�par�s par des espaces) mais aussi tous les mots qui commencent par les mots introduits. Donc si le visiteur veut faire une recherche sur java, il aura toutes les pages traitant de java mais aussi celles traitant de javascript. Mais s�il met des guillemets, il faut faire la recherche sur les mots exacts. Maintenant, � force d�essayer, je d�couvre des effets de bord. Par exemple, si le visiteur met malgr� tout un *, il ne faut pas en mettre un autre. Le visiteur pourrait par inadvertance mettre plusieurs espaces entre les mots. Le visiteur pourrait mettre un nombre impair de guillemets. Le visiteur pourrait commencer par un ou plusieurs espaces. Et sans doute encore bien d�autres�

    SpaceFrog, ta proposition transforme
    Java ajax "Internet Explorer" firefox* Linux (j'ai mis un espace avant Java)
    En
    * Java* ajax* "Internet* Explorer"* firefox** Linux*
    Ce qui est d�j� tr�s bien. Merci.
    Comme je ne suis pas sp�cialiste en RegExp, je ne sais pas quoi faire pour poursuivre l�id�e RegExp (toutes propositions sont les bienvenues), j�ai donc continu� sur ma lanc�e.

    Le script suivant
    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
    function trim(texte)
    {
       var temp = texte.replace(/(^\s*)/g,"");// Remove blank before the string
       return (temp.replace(/(\s*$)/g," "));// Add a blank after the string
    }
    function searchpad(searchtext) 
    {
    	var tableau = searchtext.split('"');//Splits on double quote
    	var resultat = '';
    	for(var i = 0; i < tableau.length; i++) 
    	{
    		if(i%2 == 0)//For strings outside double quote
    		{
    			tableau[i] = trim(tableau[i])//Remove blank before and a 1 blank after the string
    			if(tableau[i] != " ")//if there is something in it
    			{
    				tableau[i] = tableau[i].replace(/\s+/gi, '* ');//Change all kind of blanc (\f,\n,\t," "...) with "* "
    				tableau[i] = tableau[i].replace('**', '*');// Replace "**" with "*" in case that the visitor had put a * after the word
    			}
    		}
    		else//For strings inside double quote => Do nothing
    		{
    			if(tableau[i] != "")
    			{
    				tableau[i] = "\""+tableau[i]+"\" ";//Except putting back the removed double quotes
    			}
    		}
    	}
    	for (var i = 0; i < tableau.length; i++) //Put back the array to string
    	{
    		resultat = resultat + tableau[i];
    	}
    	return(resultat);
    }
    Transforme
    Java ajax "Internet Explorer" firefox* Linux
    En
    Java* ajax* "Internet Explorer" firefox* Linux*
    Ce qui devrait convenir pour le moment mais je trouve cette solution tr�s in�l�gante et sans doute pas bien optimalis�e.
    Merci pour votre aide.

Discussions similaires

  1. RegExp : Problem avec ajout de retour a la ligne
    Par Roming22 dans le forum Linux
    R�ponses: 3
    Dernier message: 12/01/2006, 19h44
  2. [syst�me] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    R�ponses: 8
    Dernier message: 29/06/2005, 17h03
  3. [VB6] [ADO] Pb ajout enregistrement table liée
    Par fikou dans le forum VB 6 et ant�rieur
    R�ponses: 4
    Dernier message: 01/10/2002, 11h49
  4. Connaitre l'unit�e � ajouter dans USES
    Par DelphiCool dans le forum Langage
    R�ponses: 7
    Dernier message: 01/08/2002, 13h48
  5. Ajouter une aide
    Par Mailgifson dans le forum C++Builder
    R�ponses: 5
    Dernier message: 12/06/2002, 13h32

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