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 :

traitement d'expression régulières


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut traitement d'expression régulières
    Bonjour,

    Je souhaite parcourir des expressions de type (par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0,3 * ([2841;100;] * 100)^0,1 * [2840;2000;1;300;]^0,25 * [230]
    Pour les elements entre '[' et ']' je dois les remplacer en faisant d'autres traitements.

    Je dois:
    récupérer la chaine_1 0,3 * ([
    récupérer chaine_2 2841;100; et la remplacer après traitement par newId1; newId2;
    recuperer la chaine_3 ] * 100)^0,1 * [
    recuperer la chaine_4 2841;100; et la remplacer après traitement
    recuperer la chaine_5 2840;2000;1;300; et la remplacer après traitement
    récuperer la chaine_6 ]^0,25 * [
    recuperer la chaine_7 230 et la remplacer après traitement

    à la fin je dois concatener toutes les chaines pour remplacer la première expression.

    quelqu'un aurait déjà fait ce genre de traitement?


    Je vous remercie d'avance.

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bonjour, en utilisant le split tu devrais t'en sortir je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string _expr = "0,3 * ([2841;100;] * 100)^0,1 * [2840;2000;1;300;]^0,25 * [230]"
    string[] _tab = _expr.Split('[', ']');
    Resultat :

    Et voila le tour est joué
    Tu n'as plus qu'a modifier tes valeurs et concaténée tes chaines.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    merci beaucoup Jacky01,

    j'avais déjà utilisé le split mais ça n'a pas marché parce que pour les expressions qui commence par '[' j'aurai comme premier element _tab[0] == "" à traiter en plus du dernier element vide du tableau.
    et si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[] _tab = _expr.Split(new char[] {'[', ']'}, StringSplitOptions.RemoveEmptyEntries);
    je perd le premier element aussi dans ce cas.

    en plus au moment de la concatenation il faut traiter tout les cas pour savoir s'il faut ajouter un '[' ou ']' ou les deux.

  4. #4
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    OK,

    Pour définir une expression régulière utilise System.Text.RegularExpressions

    http://msdn.microsoft.com/en-us/libr...ons.regex.aspx

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Dis moi Jacky01, le dernier element de ton tableau _tab[6] est vide
    est ce que c'est automatique ou bien c'est parce que tu as laissé un espace entre le dernier ']' et les " ?

    merci encore

  6. #6
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Dans notre cas il est vide c'est car le dernier caractère de la chaine est un caractère de split.
    Si tu ta formule terminais par un autre caractère qu'un '[' ou ']' on aurai pas ce champ vide.

    En utilisant StringSplitOptions.RemoveEmptyEntries cela solution ce problème.

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

Discussions similaires

  1. Expressions régulières en SQL et traitement de chaîne
    Par jeremdu94 dans le forum Développement
    Réponses: 2
    Dernier message: 06/01/2011, 15h55
  2. Expressions régulières : traitement de HtmlPage + API HtmlUnit
    Par lahmar.abdel1 dans le forum Général Java
    Réponses: 2
    Dernier message: 30/04/2009, 14h16
  3. Réponses: 93
    Dernier message: 15/04/2009, 15h34
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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