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 :

parcourir une chaine de caractères


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut parcourir une chaine de caractères
    Bonjour,

    C'est une application web asp.net et c# ,
    j'aimerais pourvoir parcourir une chaine de caractère pour pourvoir trouver des tabulation a lintéreiur ou des retour de ligne dans un fichier texte.

    Exemple de mon fichier texte :

    nom de la personne age adresse ville tel
    nom de la personne age adresse ville tel
    nom de la personne age adresse ville tel
    nom de la personne age adresse ville tel
    ......

    et donc jaimerais parcourir ma premier ligne et recupéré le nom de ma personne, lage, ladresse, le ville , le tel et le mettre dans un tableau. Pour cela il faut tester les tabulation et les retour de ligne mais je sais aps coment faire.


    Voila le premier code que jai fais mais ca ne marche pas.


    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
     
    private void Button4_Click(object sender, System.EventArgs e)
    {
    string ligne = " " ;
    string chaine = " " ; 
    string [] montablo ;
        char[] Caractaire_Separateur;
        string chaine1 = " " ;
     
        int cpt =0;
     
    StreamReader sr=File.OpenText(@"C:\monFichier.dat") ;
    while ( ligne != null)
            {
            ligne = sr.ReadLine();
            chaine+=ligne;
            }
     
    foreach (char ch in chaine) { Label2.Text=("ok"); }
     
     
    String MyString= "test";
    for (int i = 0; i < MyString.Length ; i++)
    { char ch = MyString[i]; 
     
             Label1.Text =("1") ;
             Label2.Text=("o") ;
             }
     
    }


    enfin voila c pas super comme code meme tres nul, je remercie tous ceux qui m'aideront.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 68
    Points : 80
    Points
    80
    Par défaut
    Je pense que tu peux essayer de débrouiller avec la fonction Split de la classe String.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    String[] lignes = taChaine.Split('\n');
     
    for(int i=0;i<lignes.length; i++)
    {
     String[] maLigne = lignes[i].Split('\t');
     //après nom => maLigne[0], age => maLigne[1] ...
    }
    ça répond à ton problème ?

  3. #3
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    ben en faite je ne comprend pas le code que tu ma mis ( pour te dire la vérité ben je métrise pas trop le c# et je dois faire une apli rapidement, tu pouré me commenté ton code et me dire ce ke chaque ligne fé ?

    merci a toi.

  4. #4
    Membre du Club
    Profil pro
    Informaticien
    Inscrit en
    Septembre 2002
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Septembre 2002
    Messages : 69
    Points : 63
    Points
    63
    Par défaut
    Salut,

    La fonction split permet de découper une chaine de caractère selon un élément séparateur.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string message = "bonjour, tous le monde, comment allez vous";
    string[] monTableau;
    monTableau = message.split(',');
    monTableau[0] contiendra "bonjour"
    monTableau[1] contiendra "tous le monde"
    monTableau[2] contiendra "comment allez vous"

  5. #5
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    ok je viens de comprendre !

    par exemple si jai un texte avec plusieur phraze , chaque phraze est séparé par un retour a la ligne et chaque mot par un espace donc sa ferais sa :

    string montext = "";
    string maphrase "";
    string[ , ] monTableau_phrase;

    monTableau = montext.split('\n') , maphrase.split('\t') ;


    et sa me donera :

    monTableau[0,1] contiendra "bonjour"
    monTableau[0,2] contiendra "tous le monde"
    monTableau[0,3] contiendra "comment allez vous"

    monTableau[1,1] contiendra "ca"
    monTableau[1,2] contiendra "va"
    monTableau[1,3] contiendra "merci"


    ca existe ce que jai ecrit ou pas du tout ???



    PS : comment tu fais pour introduire du code dans ton message ??

  6. #6
    Membre du Club
    Profil pro
    Informaticien
    Inscrit en
    Septembre 2002
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Septembre 2002
    Messages : 69
    Points : 63
    Points
    63
    Par défaut
    Non pas tout as fait, split renvoi un tableau à une dimension seulement.

    reprenons ton exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string montext = "";
    string maphrase "";
    string[ , ] monTableau_phrase;
     
    monTableau = montext.split('\n') , maphrase.split('\t') ;
    Si tes chaine de caractère ne contiennent aucune valeur (même si chaine vide est déjà une valeur mais on va pas tous compliqué) tu ne peut rien "splitter".
    Comme je te le dis au début, split renvoi un tableau à une dimension donc tu ne peut pas faire deux split pour envoyer sur un tableau à deux dimension.

    Je te conseille de faire des tests avec l'exemple que je t'ai donné, lorsque ce sera concluant remplace par ton texte à toi et ton séparateur qui est la tabulation.

    Pour la fin de ligne tu doit lire ton fichier avec la méthode readLine je crois ou qqchose comme ca qui te permet de lire ligne après ligne. Puis pour chaque ligne lu tu fait unjsplit et tu rempli ton tableau.


    NB: Pour mettre du code utilise l'icone en forme de diez en haut de l'éditeur de texte.

  7. #7
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    "merci pour ta patience"

    jai donc tester ton exemple et sa me donne effectivement ce que je demander c'est a dire pouvoir mettre dans un tableau les mot d'une phrase.

    jessaye donc de ladapté a mon code, qui est de pourvoir faire la meme chose non pas avec une phraze mais avec un fichier entier qui comporte plusieur phrase .

    en fait c'est une application que je doi faire au plus vite mais jai un gros soucis de syntaxe c'est pour sa que je demande de laide pour mettre de lordre dans mon code et avoir une base c# potable sur laquel que peu avancé.


    jte fais monter ce que jai fais :

    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
     
     
    private void Button4_Click(object sender, System.EventArgs e)
        {
         string ligne = " " ;
         string chaine = " " ; 
         string[] monTableau;
     
         StreamReader sr=File.OpenText(@"C:\File.dat") ;
    	while ( ligne != null)
    	{
    	    ligne = sr.ReadLine();
    	    chaine+=ligne;
    	}
     
    	monTableau = chaine.Split('\n');
     
    	StringBuilder sb = new StringBuilder() ;
    	foreach(string texte in monTableau) 
    	{
    		sb.AppendFormat(texte) ;
    	}
    	Label1.Text = sb.ToString() ;
     
      }

    mais je ne sais pas si c'est juste , a quel moment je doit introduire le unjsplit ?

    tu pourai jetter un coup doeil a mon code et essayer de remetre un peu dordre car au nivo syntaxe ca doi pas etre super.

    Merci !!

  8. #8
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    je sais que la solution serais dans un premier temps faire un split dans mon texte pour extraire les retour ligne et dans un secon temps un split pour extraire les tabulation de ma chaine .. mais comment faire

    car juste pour faire

    mon_tableau_phrase = montexte.Split('\n');

    et recupéré le contenu dans mon tableau dans une chaine pour a son tour faire

    mon_ tableau_ mot =maphrase.split('\t');

    et ben je ny arrive pas je sais pas coment affecter a ma chaine le contenue de ma chaine.

    jsuis nulle je sais..

  9. #9
    Jay
    Jay est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2002
    Messages : 124
    Points : 189
    Points
    189
    Par défaut
    Slt,

    Juste pour info et pour t'eviter qql erreurs, il faudrait revoir ton fichier initial car avec des séparateurs "\t", tu risques d'etre confronter avec des noms, des villes, etc sous la forme:
    ville = la rochelle
    nom = machin truc
    et tu ne risques pas d'avoir le resultat voulu....

    @+
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  10. #10
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    je sais , mon fichier na pas la meme structure que mon exemple. donc de ce coté la ya pas de problem

  11. #11
    Membre du Club
    Profil pro
    Informaticien
    Inscrit en
    Septembre 2002
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Septembre 2002
    Messages : 69
    Points : 63
    Points
    63
    Par défaut
    C'est plus un problème d'algorythme que tu as.

    D'abord créer un tableau de tableau
    puis à chaque lecture de ligne (chaque passsage dans le while) fait un split.
    Puis ajoute le tableau ainsi crée à ton tableau de tableau

    Au final tu aura un tableau dont chaque cellule contient un tableau de chaine de caractère composant la ligne lu dans le fichier

    Pour info sur les tableaux: http://fr.wikibooks.org/wiki/Program...p/Les_tableaux

  12. #12
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Points : 70
    Points
    70
    Par défaut
    mais je diré plus que c'est un probleme de syntaxe car en vb c'est pas du tout la meme logique , et c'est ce qui me manque je sais comment le faire mais je sais pas comment l'ecrire.

    mé bon jvé essaye de le faire et tu me dis si c'est juste ok ?

    NB: sa fé presque 2semaine que je suis sur le meme probleme si qqqun pouvé me donné la syntaxe!! lol

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 201
    Points : 132
    Points
    132
    Par défaut
    Regarde du côté des expressions réguliéres
    C'est de loin la solution la plus efficace et la plus rapide

  14. #14
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    Je veux juste dire que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
         StreamReader sr=File.OpenText(@"C:\File.dat") ;
    	while ( ligne != null)
    	{
    	    ligne = sr.ReadLine();
    	    chaine+=ligne;
    	}
    c'est pas la bonne methode de lire le contenu de ton fichier.
    Premierement tu ne fermes jamais ton flux. Deuxiemement c'est la boucle qui n'est pas comme il faut parce que le ReadLine() est dans le corps de ta boucle. Alors si on a atteint la fin du fichier on aura ligne = null donc chaine += null. Dans ton cas c'est pas grave mais si tu traites la ligne dans la boucle tu auras une exception.
    C'est beaucoup plus mieux de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                StringBuilder chaine = new StringBuilder();
                using (StreamReader sr = File.OpenText(@"C:\File.dat"))
                {
                    string ligne = string.Empty;
                    while ((ligne = sr.ReadLine()) != null)
                    {
                        chaine.Append(ligne);
                    }
                }
                string[] monTableau = chaine.ToString().Split('\n');
    ou encode mieux et le plus propre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                string chaine = string.Empty;
                using (StreamReader sr = File.OpenText(@"C:\File.dat"))
                {
                    chaine = sr.ReadToEnd();
                }
                string[] monTableau = chaine.Split('\n');
    Even the biggest journey, starts with a single step.

  15. #15
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 271
    Points : 717
    Points
    717
    Par défaut
    si tu as besoin de parcourir les caractères d une string, il faut utiliser la methode ToCharArray
    string a;
    char[] chars = a.ToCharArray();
    foreach (char c in chars)
    ...

  16. #16
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    On peut se passed de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char[] chars = a.ToCharArray();
    car la classe string implemente l'interface IEnumerable<char> Alors on peut ecrire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                string pseudo = "scifire";
                foreach (char symbol in pseudo)
                {
     
                }
    A+
    Even the biggest journey, starts with a single step.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Parcourir une chaine de caractère
    Par jnauche dans le forum VBScript
    Réponses: 4
    Dernier message: 13/08/2008, 16h46
  3. parcourir une chaine et extraire depuis un caractère
    Par Dsphinx dans le forum Langage
    Réponses: 4
    Dernier message: 12/03/2007, 15h16
  4. [String] Parcourir une chaine de caractères
    Par Samanta dans le forum Langage
    Réponses: 13
    Dernier message: 20/05/2005, 10h27
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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