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

C# Discussion :

Regex sur un string..


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Par défaut Regex sur un string..
    Bonjour à tous.. voici mon problème et je pense que ma seule solution c'est les regex.. mais je bloque complet, j'avoue que je sais même pas par ou commencer..

    je recois une string qui peux avoir une multitude de varient.. qq exemples !

    str1 = {var1} - {var2} , un bout de texte;
    str1 = un bout de texte, {var3}, un autre bout de texte

    ....

    l'idée c'est de recomposer une string en remplacant tout ce qui est entre {} par la valeur d'une bdd

    exemple

    srtfinal = Le resultat de var1 - le resultat de var2, un bout de texte
    srtfinal = un bout de texte, le résultat de var3, un autre bout de texte

    Je veux bien un peu d'aide msr les pros du regex :-) ou si vous avez mieux à me proposer..

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Les chaînes en entrée tu as moyen de modifier un peu leur format ? Car à ce moment la méthode String.Format pourrait peut être suffire, en passant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string str = "{0} - {1} , un bout de texte";
    string final = string.Format(str, valeur1, valeur2);

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Par défaut
    malheureusement non, et c'est bien la tout mon problème..

    je ne sais pas du tout ce que je recois comme string, la seule chose que je sais c'est que ce qui est entre {} est forcement une variable, c'est pour ca que je pensais au regex.

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    A ce moment les Regex peuvent répondre au problème. Il faut utiliser la méthode Regex.Replace avec la surcharge qui attend un MatchEvaluator
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    static void Main(string[] args)
    {
        string input = "{var1} - {var2} , un bout de texte;";
        string final = Regex.Replace(input, "{var[0-9]+?}",
             delegate(Match match)
             {
                 return GetValueFromVar(match.Value);
             }
         );
     
        Console.ReadLine();
    }
    La méthode GetValueFromVar doit retourner la chaîne de caractères correspondant à tes variables ({var1}, {var2}, ...)

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Un autre solution c'est de constituer un dictionaire des variables avec leurs valeurs

    Et de parcourir tes string en faisant un replace des clef du dictionnaire par les valeurs

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Par défaut
    Citation Envoyé par olibara Voir le message
    Un autre solution c'est de constituer un dictionaire des variables avec leurs valeurs

    Et de parcourir tes string en faisant un replace des clef du dictionnaire par les valeurs
    je me suis jamais servis des dictionnaires, faudra que je regarde ca :-)

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    A ce moment les Regex peuvent répondre au problème. Il faut utiliser la méthode Regex.Replace avec la surcharge qui attend un MatchEvaluator
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    static void Main(string[] args)
    {
        string input = "{var1} - {var2} , un bout de texte;";
        string final = Regex.Replace(input, "{var[0-9]+?}",
             delegate(Match match)
             {
                 return GetValueFromVar(match.Value);
             }
         );
     
        Console.ReadLine();
    }
    La méthode GetValueFromVar doit retourner la chaîne de caractères correspondant à tes variables ({var1}, {var2}, ...)

    Merci bcq ca marche parfaitement :-)

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

Discussions similaires

  1. BufferOverflowException sur un String
    Par tomburn dans le forum Langage
    Réponses: 9
    Dernier message: 21/12/2005, 13h58
  2. Pb sur les String entre navigateurs
    Par chpog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/09/2005, 10h59
  3. [Debutant] Pb sur les string
    Par chpog dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 16/09/2005, 12h03
  4. Realiser des tests exhaustifs sur les String
    Par Sarrus dans le forum Langage
    Réponses: 9
    Dernier message: 07/07/2005, 11h52
  5. [débutant]travailler sur contenu string
    Par Serge76 dans le forum SL & STL
    Réponses: 13
    Dernier message: 06/11/2004, 16h43

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