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 :

Problème avec la methode split


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Points : 92
    Points
    92
    Par défaut Problème avec la methode split
    slt j'ai une chaine de caractère que je récupéré de mon fichier xml ,charge dans une string et que je voudrais splilé pour cela je procède comme suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          contenu="dfdfhdkhfkdshkfhsdfhs,fdifdofuosdufodufosdfuodif,dfodufosdofiods,dfdipfdipsfisd";
     
       adresse=contenu;
       string[] words =adresse.split(",");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      notons que contenu représente le contenu de mon fichier xml.
    lorsque je veux affecté le contenu de adresse à words 2 exceptions sont produites System.ArgumentRangeException et System.ArgumentException .
    j'aimerais donc savoir comment faire pour réussi mon split évitant ainsi ces exceptions.
    espérant mettre fais comprendre toute idée ou conseil serais la bien venu
    a++

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    System.ArgumentException signifie que l'argument que tu passes à la fonction n'est pas conforme. Or si on lit la doc de Split(), on comprend que c'est un tableau de char qu'il faut passer à la fonction, et non pas un string.

    RTFM.

  3. #3
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Le délimiteur pour la fonction split doit être un tableau de caractère. Donc si tu lui passe un type string, ça ne marchera pas. Il faut donc faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    contenu = "dfdfhdkhfkdshkfhsdfhs,fdifdofuosdufodufosdfuodif,dfodufosdofiods,dfdipfdipsfisd";
    adresse = contenu;
    char separateur = ',';
    string[] words = adresse.Split(separateur);

  4. #4
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    oui, ils ont tous les deux raison
    si tu veux changer ton code le moins possible, essayes d'ajouter ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      contenu="dfdfhdkhfkdshkfhsdfhs,fdifdofuosdufodufosdfuodif,dfodufosdofiods,dfdipfdipsfisd";
     
       adresse=contenu;
       string[] words =adresse.split(",".ToCharArray());
    comme disais Isythiel, RTFM

    bon dev

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 168
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    J'avais jamais réalisé que Split() n'acceptait que des char[]...
    J'ai toujours cru qu'il acceptait char aussi comme argument.

    Comment cela se fait-il que ça marche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[] words =adresse.Split(',');

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Car il comprend ',' comme un tableau de char d'un élément.

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 168
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Etrange je trouve.

    Parceque autant "," est effectivement assimilable un array de char (","[0] == ',') autant ',' est un char et non un char[]

    En C c'est d'autant plus probant puisqu'une chaîne de caractères, c'est un char[], mais que char != char[]

    Je trouve ça un peu déroutant.

    Pour moi ça serait plus logique que Split() accepte un string en le castant implicitement en char[] qu'un char casté en char[]...

  8. #8
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Oui mais tu n'es pas en C, et un string en C# est un objet à part entière, et pas un alias de char* comme en C.

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 76
    Points : 81
    Points
    81
    Par défaut
    Un exemple qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string emails = EmailFrom + ';' + EmailTo + ';' + EmailCC + ';' + EmailBC;
                char[] splitters = new char[] { ';' };
                string[] laCase = emails.Split(splitters);
    tu peu parcourir ton tableau si tu veux après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (int i = 0; i < laCase.Length; i++)
    {}
    ou recuperer directement la partie qui te concerne
    par exemple

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Etrange je trouve..
    Non, car la définition de la méthode est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Split(params char[] ...);
    Donc, tu peux passer :

    - un char
    - une liste de char
    - ou explicitement un tableau de char.

  11. #11
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 168
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Je n'avais pas fait attention au mot clé "params" en effet.

  12. #12
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 369
    Points
    2 369
    Par défaut
    Oublie pas d'utiliser des try catch pour d'autres eventuellles exceptions

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par alex_vino Voir le message
    Oublie pas d'utiliser des try catch pour d'autres eventuellles exceptions
    Le try catch doit être utilisé pour intercepter des exceptions susceptibles d'arriver dans un contexte particulier; pas pour masquer des exceptions liées à des erreurs de programmation.

Discussions similaires

  1. [VB6]Problème avec la Fonction Split
    Par Goupo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/06/2007, 19h23
  2. Réponses: 3
    Dernier message: 12/04/2007, 10h47
  3. [Tableaux] problème avec la fonction split()
    Par Marcus15 dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 11h17
  4. Réponses: 2
    Dernier message: 24/10/2005, 10h23
  5. [IDHTTP] Problème avec la methode post (login:pass@ww.url)
    Par Rayek dans le forum Web & réseau
    Réponses: 5
    Dernier message: 11/07/2005, 10h03

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