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 :

[C#] Traitement de chaine


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut [C#] Traitement de chaine
    Salut,

    Je débute en C# et aimerais traiter une chaine que je reçois, du type suivant : string s = "10,0,20,30,6,24"; afin de récupérer dans un tableau de int (int[] tab = new int[6];) les valeurs suivantes :

    tab[0] = 10
    tab[1] = 0
    tab[2] = 20
    ...
    tab[5] = 24

    Quelqu'un peut-il me conseiller sur un exemple ?

    Merci d'avance.

  2. #2
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    La manière la plus propre que je vois pour l'instant est celle-ci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string s = "10,0,20,30,6,24";
    string delimStr = ",";
    char [] delimiter = delimStr.ToCharArray();
    string [] split = s.Split(delimiter);
    int[] tab = new int[split.Length];
    int i = 0;
    foreach(string st in split)
    {
    	tab[i] = Int32.Parse(st);
    	i+=1;
    }
    Voilà...!

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Exemple en VB, mais très simple et avec peu de lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim s as string
    Dim Tab() as Integer
     
    s = "10,0,20,30,6,24"; 
    tab() = split(s, ",",-1)

    Tu auras ainsi un tableau avec tes données. L'index ira de 0 et sera incrémenté de 1 à chaque fois qu'il rencontrera ton séparateur ",".

  4. #4
    Membre confirmé
    Avatar de malbaladejo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2002
    Messages : 379
    Points : 527
    Points
    527
    Par défaut
    Il faut utiliser la méthode Split de la class String.

    Exemple issu du SDK .Net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string delimStr = " ,.:";
    char [] delimiter = delimStr.ToCharArray();
    string words = "one two,three:four.";
    string [] split = null;
    split = words.Split(delimiter);

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    Le C# complique vraiment les méthodes je trouves.

    Enfin bon, si c'est la SDK qui le dit...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Ukyuu
    Le C# complique vraiment les méthodes je trouves.
    Pas vraiment non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[] stringList = s.Split( ',' );
    Il suffit d'une ligne pour avoir le tableau. Comme avec ta fonction VB6 à jeter :)
    Après c'est la conversion en tableau d'entier qui oblige à passer par une boucle pour tout remplir en convertissant les valeurs. Mais ça c'est un peu normal (sauf en VB6, mais c'est notamment pour ça que c'est à jeter).

    Enfin en même temps, c'est pas la mort non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string[] stringList = s.Split( ',' );
    int[] numberList = new int[ stringList.Length ];
    for ( int i = 0 ; i < stringList.Length ; ++i )
      numberList[i] = Convert.ToInt32( stringList[i] );
    Par contre, visiblement y en a qui aiment se compliquer la vie :)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Points : 71
    Points
    71
    Par défaut
    De toute façon, c, c++, php, java, tout ça c'est des langages barbares, j'y comprends rien.

    Le VB n'est pas à jetter, c'est simplement un langage de débutant(e), c'est pourquoi je commence par là.

    Pour la fonction split, je vois pas pourquoi s.split pose moins de problème que split(s...). Mais on va pas faire deux trolls sur le même sujet, sinon on va se faire fouetter, et j'aime pas le fouet.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 29
    Points
    29
    Par défaut
    Ukyuu

    Si tu veux débattre de ça
    http://www.developpez.net/forums/vie...590798#1590798

    Bon courae=ge ! c'est parfois.. virulent !..

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Ukyuu
    Le VB n'est pas à jetter,
    Ça c'est source à troll, donc on va zapper :)

    Citation Envoyé par Ukyuu
    Pour la fonction split, je vois pas pourquoi s.split pose moins de problème que split(s...).
    Ça ce n'est pas source à troll, c'est très simple.

    Les fonctions VB6 comme Split ne sont présentes dans le framework .NET que pour des raisons de pseudo-compatibilité entre VB.NET et VB6 (et quand on voit les différences entre les langages, on peut se dire qu'ils auraient mieux fait de s'abstenir et de ne pas faire comme si on pouvait facilement passer de l'un à l'autre)

    Elles sont plus lentes, ne suivent pas forcément le comportement habituel des classes du framework (gestion des nulls etc) et sont contraires aux côtés POO et 'multi-langages' de .NET (si on connait le framework, peu importe le langage, on peut toujours comprendre facilement ce que fait un code qu'on nous colle sous les yeux).


    Plus simplement, en .NET, tu fais du VB.NET, pas du VB6. Split est une fonction de VB6, pas de VB.NET. Elle n'a rien à faire dans ton code, si ce n'est pas du code VB6 existant que tu es en train de migrer.

  10. #10
    Membre averti
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par Maniak
    en .NET, tu fais du VB.NET, pas du VB6. Split est une fonction de VB6, pas de VB.NET. Elle n'a rien à faire dans ton code, si ce n'est pas du code VB6 existant que tu es en train de migrer.
    +1

    et on va s'arreter la, hein?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 29
    Points : 35
    Points
    35
    Par défaut
    avec les include qui vont bien (et a convertir en vb) :
    string to_split = "a,b@@c,d@@e,f";
    string []arrSplit = RegEx.split(to_split, "@@");
    en principe et de souvenir.... (PAS TESTE....la flegme désolé )
    ++

  12. #12
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    salut,
    et en faisant tout simplement ça, ça ne marcherait pas (et ça serait pas plus simple, surtout):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int [] numberTab= (int)s.Split(',');

  13. #13
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Maniak
    Citation Envoyé par Ukyuu
    Le VB n'est pas à jetter,
    Ça c'est source à troll, donc on va zapper
    Un troll ? Absolument pas !! C'est un axiome (quasiment un dogme) reconnu par toute la communauté des vrais développeurs.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 71
    Points : 46
    Points
    46
    Par défaut
    J'aurais plutot écrit ca comme ca :

    string[] tabbedNbStr = s.Split(new char[1] {','});

    et ensuite tu convertis en int.

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

Discussions similaires

  1. fonctions de traitements de chaines de caracteres
    Par jerem001_5 dans le forum C
    Réponses: 19
    Dernier message: 24/11/2005, 20h47
  2. Cherche fonction de traitement de chaine de caractere
    Par DeezerD dans le forum Langage
    Réponses: 1
    Dernier message: 10/09/2005, 14h41
  3. Traitement de chaine
    Par topolino dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/04/2005, 19h24
  4. [VB.NET] Traitement sur chaine (simple)
    Par Tempotpo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 13h20
  5. [CR]Traitement de chaines dans les formulas
    Par teckilax dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 05/07/2004, 09h01

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