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 :

RegExp pour différencier , et ,,


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Par défaut RegExp pour différencier , et ,,
    Bonjour,

    j'ai des phrases du style : "toto,,tata,tutu,titi,,tyty".

    Je voudrais splitter par rapport au , et non pas rapport au ,,

    J'ai essayé avec Split, mais cela ne fonctionne pas.
    En PHP, il n'y a pas de problème (preg_split('/(?<!,),(?!,)/', 'toto,,tata,tutu,titi,,tyty')) mais en C# la méthode split gère différement le dilimiteur.

    Je souhaite donc utiliser Matches mais je ne trouve pas la Regex qui
    me permettrait d'obtenir :

    toto,,tata
    tutu
    titi,,tyty


    Si vous avez une idée, je suis preneur ? Ou une autre méthode ?

    Merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    replace ,, #
    split ,
    replace # ,,
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Par défaut


    Ok, mais prenons le cas où au lieu de tot il y a n'importe quel caractère comme # par exemple

  4. #4
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Je ne connais pas exactement ton besoin; mais si ton problème est lié aux entrées vides, ça se gère comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s = "toto,tutu,,titi";
    string[] a = s.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
    en sortie, tu auras un tableau de 3 chaines : "toto", "tutu", "titi".

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Par défaut ajout de kheironn
    Je souhaite donc utiliser Matches mais je ne trouve pas la Regex qui
    me permettrait d'obtenir :

    toto,,tata
    tutu
    titi,,tyty
    Peut-être qu'en utilisant en partie ce que kheironn a inscrit avec quelques modifications...?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    String test = "toto,,tata,tutu,titi,,tyty";
    String[] a = s.Split(new char[] { ',' }, stringSplitOptions.None);
      for (int i = 0; i < a.Length; i++)
         {
                   if (a[i] == "")
                   {
                       a[i] = ",,";
                   }
         }
    Après il n'y a plus qu'à réassembler?

  6. #6
    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
    Il faut bien utiliser des lookaround comme tu le montres avec ta version PHP. En C# ça donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string pattern = "(?<!,),(?!,)";
    string input = "toto,,tata,tutu,titi,,tyty";
     
    string[] result = Regex.Split(input, pattern);
    Cela permet de splitter sur les virgules qui ne sont pas précédées et suivies d'une autre virgule.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Par défaut à StormimOn
    J'ai juste une question en rapport à ce regex.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string pattern = "(?<!,),(?!,)";
    pourquoi le '<' ? J'ai cherché sur le net et j'ai pas vu ce qu'il signifiait. c'est un caractere spécial ou une faute de frappe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string pattern = "(?!,),(?!,)";
    Cela devrait permettre de bien faire le split, non?

    Merci StormimOn pour ta réponse, elle m'a également été utile.

  8. #8
    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
    Citation Envoyé par SpyKe974 Voir le message
    pourquoi le '<' ? J'ai cherché sur le net et j'ai pas vu ce qu'il signifiait. c'est un caractere spécial ou une faute de frappe?
    Ce n'est pas une faute de frappe. Cela rentre dans la construction de ce que l'on appelle les Lookaround

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Par défaut
    merci pour le lien sur ton cours, je crois bien que j'en avais besoin!

Discussions similaires

  1. Regexp pour num. telephone 00 00 00 00 00
    Par metatron dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2006, 13h50
  2. Regexp pour supprimer plein de blancs
    Par Petitcodeur dans le forum Langage
    Réponses: 6
    Dernier message: 09/08/2006, 15h01
  3. Problème pour différencier plusieurs select avec le même nom
    Par vallica dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/04/2006, 11h35
  4. RegExp pour vérifier un chiffre à 2 décimales
    Par RobertDeNiroZ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/05/2005, 18h07
  5. regexp pour email
    Par noinneh dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/12/2004, 11h11

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