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

ASP.NET Discussion :

[C#] RegularExpressions


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Par défaut [C#] RegularExpressions
    Bonjour

    je voudrais remplacer un mot par un autre dans une chaine de caractere.

    au debut j'ai pensé a la methode replace de string mais le sousci est que si le mot a rempler ce trouve dans un autre mot il le remplace aussi

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string mot = "in";
    string chaine = "cette facont est incorrecte";
     
    chaine =chaine.replace(mot,"do");
    le resultat est

    cette facont est docorrecte

    donc je c'est que l'on peut ce servire de RegularExpressions pour remplacer un mot par un autre mais comment faire cela je ne sais pas .

    si quelqu'un a une idée merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 83
    Par défaut
    Salut,

    ci-joint expression reguliere te permettant de realiser ton traitement.
    A tester (mais je pense qu'il doit fonctionner dans tous les cas de figure).

    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
     
    // Definition de l'expression régulière
    // caractère \b -> Mot entier
    // remplacer le mot "fin"
     
    Regex mot = new Regex(@"\bfin\b"); 
     
    // Chaine de caractere dans laquelle la recherche
    // s'effectue
     
    string chaine = "enfin, la fin justifie les moyens finaux.Test de fin?"; 
     
    // caractere de remplacement du mot "fin" par "test"
     
    string c = mot.Replace(chaine,"test");
    MessageBox.Show(c);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Par défaut
    merci mais ca ne marche pas j'essaye de faire ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    			for(i=0;i<therm.Length;i++)
    			{
    				string motremplace=therm[i];
    				Regex mot = new Regex(@"\b"+motremplace+"\b"); 
    				string motnouveau="<strong><font color=\"#0033ff\">"+therm[i]+"</font></strong>";
    				codetxt = mot.Replace(codetxt,motnouveau); 
    			}
    Merci de ton aide

  4. #4
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Tu pourrais faire la recherche avec le mot + un espace avant (et meme apres si la chaine ne comporte pas de ponctuation)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Par défaut
    merci c'est bon ca marche il y a \b en trop a la fin

    voila comme ca c'est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	for(i=0;i<therm.Length;i++)
    			{
    				string motremplace=therm[i];
    				Regex mot = new Regex(@"\b"+motremplace); 
    				string motnouveau="<strong><font color=\"#0033ff\">"+therm[i]+"</font></strong>";
    				codetxt = mot.Replace(codetxt,motnouveau); 
    			}

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 83
    Par défaut
    Le caractère "\b" est nécessaire en début et fin de mot.
    Ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Regex mot = new Regex(@"\b"+motremplace+"\b");
    ne marchait pas, car du dois doubler le caractère "\" lors de la concatenation (pour qu'il soit interpreté)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Regex mot = new Regex(@"\b" + motremplace +"\\b");

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Par défaut
    ok merci je vais tester

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

Discussions similaires

  1. regularexpression = 10 chiffres, pas plus pas moins
    Par cyrano_de_bergerac dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/12/2012, 11h14
  2. RegularExpression dans un DataMember pour un client silverLight
    Par OminiuS dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 02/09/2010, 09h36

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