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 :

Découper string et mettre dans string[]


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut Découper string et mettre dans string[]
    Bonjour,

    j'essaye de créer une fonction qui va couper une chaine string et me la renvoyer en tableau de string

    Donc par exemple je lui envoi 111222333 et elle retourne 111, 222, 333 et j'affiche le contenu dans un richTextBox.

    Le problème c'est que ma fonction "SplitString" me renvoi System.Char[]...

    Je ne comprend pas trop...

    Voici le code C# :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                string input = "aaaaaabbbbbbccccccdddddddeeeeeeeffffffgggggg";
                string[] arr = SplitString(input, 6);
                StringBuilder sortie = new StringBuilder();
     
                for (int i = 0; i <= arr.Length - 1; i++)
                {
                    if (i == arr.Length - 1)
                    {
                        sortie.Append("\"" + arr[i].ToString() + "\"");
                    }
                    else
                    {
                        sortie.Append("\"" + arr[i].ToString() + "\"" + " + _" + System.Environment.NewLine);
                    }
                }
                richTextBox1.Text = sortie.ToString();
            }
     
            private static string[] SplitString(string input, int partsize)
            {
                decimal valeur = input.Length / partsize;
                int amount = (int)(Math.Ceiling(valeur));
                string[] oout = new string[amount];
                int currentpos = 0;
     
                for (int I = 0; I <= amount - 1; I++)
                {
                    if (I == amount - 1)
                    {
                        char[] temp = new char[(input.Length - currentpos)];
                        input.CopyTo(currentpos, temp, 0, (input.Length - currentpos));
                        oout[I] = temp.ToString();
                    }
                    else
                    {
                        char[] temp = new char[partsize];
                        input.CopyTo(currentpos, temp, 0, partsize);
                        oout[I] = temp.ToString();
                        currentpos += partsize;
                    }
                }
                return oout;
            }
        }
    }
    J'ai besoin de cette fonction (tel quel) pour un autre programme en cours de développement...

    Merci d'avance pour votre aide^^

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    pourquoi ne pas utiliser la fonction "Substring" des String tout simplement ?
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut
    Je ne connais pas^^ SubString accepte 2 paramètres car il me faut (string input, int partsize)

    Je débute en c#....

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    de rien

    En règle général, pour tout ce qui est "manipulation" de string, la plupart des fonctions existent déja... donc, il est préférable de cherche un peu plutot que de faire comme en C et de réinventer la roue
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut
    SubString accepte 2 parametres ? car il me faut (string input, int partsize)

    Edit : je pense pas que sa marchera... Moi j'ai besoin que sa me retourne un tableau !

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Tu fais comme un grand une recherche sur la MSDN...
    Tu ne veux pas non plus nous envoyer tes sources et ton cahier des charges, non ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    Tu fais comme un grand une recherche sur la MSDN...
    Tu ne veux pas non plus nous envoyer tes sources et ton cahier des charges, non ?
    Et calme toi mon grand ^^ on discute non ?

  8. #8
    Expert éminent
    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 : 43
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    On ne t'a jamais dit que remplacer ta méthode SplitString par SubString. Par contre il serait plus judicieux d'utiliser la méthode SubString dans ton algo (i.e. dans ta méthode SplitString) afin d'obtenir le résultat que tu veux, ce sera bien plus simple à comprendre.
    Pas de questions techniques par MP

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut
    OK je vais essayer avec sa. Merci

  10. #10
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Citation Envoyé par deli2025 Voir le message
    Et calme toi mon grand ^^ on discute non ?

    de plus SubString renvoi pas un tableau or il me faut un tableau^^
    Je suis calme, très calme.
    Seulement, la moindre des choses quand on pose une question, c'est de faire un minimum d'efforts pour chercher par soi-même...
    Dans VS, un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s = "jechercheparmoimeme";
    s.Substring(
    t'aurait donné la signature de la fonction avec l'intellisense.
    Il me semble que ce n'est pas trop complexe...

  11. #11
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    février 2007
    Messages
    818
    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 : 818
    Points : 1 103
    Points
    1 103
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    Dans VS, un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s = "jechercheparmoimeme";
    s.Substring(
    t'aurait donné la signature de la fonction avec l'intellisense.
    Il me semble que ce n'est pas trop complexe...
    oui, mais ce n'est pas un filet de truite tout cuit...
    après, tu as effectivement un grand nombre de choses sur la manipulation des chaines dans le fw... c'est un problème classic !
    Donc ton besoin est de découper une chaine en fonction d'une taille et de retourner un tableau de chaines ?
    On te l'a dit : substring pour le découpage et tu mets tes morceaux dans un tableau. L'algo est simple, tu devrais y arriver tout seul. Par contre, d'après ce que j'ai vu, tu fais un découpage en taille fixe. Gère bien le dernier morceau pour ne pas être hors limite et lever une exeption...
    En informatique, le problème se situe toujours entre le clavier et l'écran !
    Il y a deux chemins entre le clavier et l'écran : Par l'UC et par l'utilisateur.

  12. #12
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Trop bon, trop con (surement )

    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
    public String[] GetMyStrings(string chaine, int size)
    		{
    			List<string> result = new List<string>();
    			int i = 0;
    			string sa;
    			while((sa = chaine.Substring(i,size)) != string.Empty)
    			{
    				i+=size;
    				if((chaine.Length-i)<size)
    				{
    					size = chaine.Length-i;
    				}
    				if(sa != null)
    				{
    					result.Add(sa);
    				}
    			}
    			return result.ToArray();
    		}
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut
    j'y suis arrivé grâce à SubString.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for (int I = 0; I <= amount - 1; I++)
    {
           if (I == amount - 1)
           {
                  int dejaPris = partsize * I;
                  int seQuiReste = input.Length - dejaPris;
                  oout[I] = input.Substring(dejaPris, seQuiReste);
            }
            else
            {
                   oout[I] = input.Substring(test, partsize);
             }
             test = test + partsize;
    }
    Sans doute pas optimal donc je vais regarder un peu ce que vous avez rajouter.

    Enfin Merci à vous

    ps : apprenez à être indulgent, la programmation n'est pas forcément évident. Surtout pour un débutant...

  14. #14
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    On est indulgent

    C juste que, quand on a l'impression que quelqu'un attend un code ou une résultat "tout cuit" sans faire l'effort d'analyser les réponses que l'on donne, on peut "s'enerver" un peu...

    Et en général, on préfère un "je n'y arrive pas avec ce que tu m'as dit", qu'un : t'as réponse ne marche pas... (ce qui peut également arriver, mais en général, quand un membre "expert ou confirmé" te réponds, on peut estimer que potentiellement, sa réponse a une bonne chance d'être pertinente, sinon complètement juste et justifiée)...

    Voilà

    Si tu considères la réponse correcte, passe le sujet à RESOLU, s'il te plait !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2009
    Messages : 81
    Points : 48
    Points
    48
    Par défaut
    je suis tout à fait d'accord avec toi mais j'avais mal compris ce qu'il voulais que je face de SubString...

    Enfin bon... Merci à vous

  16. #16
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Citation Envoyé par deli2025 Voir le message
    ps : apprenez à être indulgent, la programmation n'est pas forcément évident. Surtout pour un débutant...
    Allez hop, je m'insère dans le sujet (et nul par ailleurs ).

    Ce n'est en aucun cas une question d'indulgence mais de ras le bol.

    Beaucoup trop de "débutants" postent ici, et attendent que les membres fassent le code à leur place. Mais le développement, ce n'est pas ça...c'est de la recherche, de la recherche et encore de la recherche (avec un peu de web-détente au mileu ^^).
    Nous pouvons te donner des éléments de réponse, mais c'est à toi et toi seul de faire la démarche de recherche derrière (genre est ce que tu es allé voir la doc msdn de la classe String ou au moins de la fonction substring ?).

  17. #17
    Expert éminent
    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 : 43
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    Juste pour le fun, une version avec les expressions régulières.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String input = "aaaaaabbbbbbccccccdddddddeeeeeeeffffffgggggg";
     
    String[] result = System.Text.RegularExpressions.Regex.Split(input, "(.{6})").Where(s => !String.IsNullOrEmpty(s)).ToArray();
    Pas de questions techniques par MP

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

Discussions similaires

  1. Mettre une string dans un Character[]
    Par SAKDOSS dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 09/03/2011, 17h16
  2. [SWT] Mettre un String dans un tree
    Par Marvelll dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 15/03/2010, 10h17
  3. Réponses: 6
    Dernier message: 07/09/2009, 14h00
  4. Réponses: 11
    Dernier message: 02/09/2009, 12h06
  5. Textbox : Recupérer la string et la mettre dans un char
    Par Yorel2006 dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 17/06/2007, 22h42

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