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

Windows Forms Discussion :

Question sur le Split()


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Points : 298
    Points
    298
    Par défaut Question sur le Split()
    Bonjour,

    j'ai une chaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String ligne = @"""11749"";""5;3"";""Madame"";""COL;LARD"";""Pascale"";"";""";
    Je la split suivant ";"

    Je devrais avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "11749", "5;3", "Madame", ""COL;LARD"", "Pascale", ";"
    et j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "11749", "5", "3", "Madame", "COL", "LARD", "Pascale", ""
    Connaissez vous un moyen de splitter en tenant compte des caracteres d'echappement.

    Merci

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    essaye de splitter sur ";" plutot que juste sur ;
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Ajoute les caractères d'échappement dans la chaîne de split (sans oublier de retirer éventuellement ces caractères en début et en fin de chaîne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string ligne = @"""11749"";""5;3"";""Madame"";""COL;LARD"";""Pascale"";"";""";
    string[] tab = ligne.Split(new string[] { "\";\"" }, StringSplitOptions.None);
    [EDIT] Grilled

  4. #4
    Membre actif Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Points : 298
    Points
    298
    Par défaut
    En fait je vais redev mon split car je peux tres bien avoir ";" au milieu de ma phrase.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si c'est toi qui choisit le caractère séparateur, y a en effet beaucoup mieux que ;
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Tu peux utiliser ce bout de code en sachant qu'une TstringList est en fait un ArrayList de string.

    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
            internal static void ExtractDelimitedStringToTsl(string s,char fieldsep,char quotesep,bool trim,TStringList tsl)
            { // quotesep=fieldsep : not quoted input
              // input tsl is cleared
              tsl.Clear();
              string word = "";
              bool quoteson = false;
              for (int i=0;i<s.Length;i++)
                if (quoteson)
                {
                  if (s[i]==quotesep) 
                  {
                    if (i < s.Length - 1 && s[i + 1] == quotesep) { word += quotesep; i++; }
                    else quoteson = false;
                  }
                  else word+=s[i] ;
                }
                else 
                  if (s[i]==fieldsep) 
                  {
                    if (trim) tsl.Add(word.Trim()) ; else tsl.Add(word) ; 
                    word="" ;
                  }
                  else if (s[i]==quotesep) quoteson=true ;
                       else word+=s[i] ;
              if (trim) tsl.Add(word.Trim()) ; else tsl.Add(word) ; 
            }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. Question sur String[] split()
    Par k3nsou dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 24/04/2009, 10h05
  2. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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