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 :

chercher un caractère dans un fichier text


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut chercher un caractère dans un fichier text
    Bonjour,
    je suis en train d'érire un programme en c# qui me permet de lire des données à partir d'un fichier text. En fait, la premiére ligne du fichier text est un réel dont j'ai besoin pour le reste du programme.
    pour lire cette première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String line;
    StreamReader sr = new StreamReader("C:\\fichier.txt");
    line = sr.ReadLine();
    sr.Close();
    textBox1.Text = line;
    jusqu'ici, c'est bon
    je doit en suite convertir le contenu du textBox1 en double, pour le faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double a = double.Parse(textBox1.Text);
    maintenant, ça fonctionne plus
    je me suis rendu compte qu'il fallait remplacer le "." dans le fichier text par un "," (example : 4.33 > 4,33 )
    est ce que qq a une idée comment le faire
    merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Re-bonjour,
    j'ai trouvé en fin une solution
    il suffit de remplacer le "." en "," dans la variable line
    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 remplcer_point_par_vigule (string chaine)
            {
                int i = 0; 
                int x = 0;
                x = chaine.Length;
                for (i = 0; i < x; i++)
                {
                    switch (chaine[i])
                    {
                        case '.':
                            chaine = chaine.Remove(i, 1).Insert(i, ",");
                        break; 
                    }
                }
     
                string result = chaine;
                return result;   
            }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    ne serait ce pas plus simple avec ceci
    http://msdn.microsoft.com/en-us/libr...e(VS.71).aspx?

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    bonjour skunkies,
    merci pour le lien,
    c'est beaucoup plus simple en utilisant la méthode Replace

  5. #5
    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 : 46
    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
    Ce serait encore plus simple avec ceci
    Pas de questions techniques par MP

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    +1
    J'ai appris quelque chose aujourd'hui !

  7. #7
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je pense que dans ton cas, la meilleur solution serait d'utiliser une *Regex. Il permets d'effectuer divers manipulations tel qu'un Replace ou une comparaison (IsMatch) pour plus de détails CLIQUE ICI
    *("Regular Expression" ou "Expression Régulière" =).

    Une te permettrais de faire des testes précise mais libre en même temps, par exemple tester puis remplacer la "," tout en t'assurant que ta chaine ne contiennent que des chiffres.

    Pour utiliser les Regexs en C# il suffit d'ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Text.RegularExpressions;
    Voici l'exemple pour ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StringB = Regex.Replace(StringA, @"\.", ",");
    StringB étant la chaîne modifiée,
    StringA la chaîne d'origine,
    @"\." la chaîne à rechercher, dans une Regex le . tout seul est une "métacaractère" (comme le \ en C#) et donc l'on doit mettre un \ devant pour indiqué que l'on veut le caractère . et non pas son signification en regex (qui représente n'importe quelle caractère).
    "," est bien entendu, la chaîne par la quelle l'on veut remplacer celle que l'on recherche.

    Et si tu souhaite aller plus loin (et c'est ici que tu exploiterais la puissance des Regex) tu pourrais ajouter un contrôle afin de tester si ta chaîne contient bien deux suites de chiffres séparé par un point (ou un virgule).

    Pour cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Regex.IsMatch(StringA, @"^[0-9]+[\.,][0-9]+$"))
    //La chaine est valide (et peut donc être convertie)
    À première vu, cela peut faire peur, mais IsMatch prends simplement deux chaîne :
    StringA, la chaîne que l'on test
    @"^[0-9]+[\.\,][0-9]+$" ce à quoi la chaine doit ressembler,
    ^ indique le début de la ligne
    [0-9] n'importe quelle caractère entre 0 et 9 (donc tous les chiffres)
    + le caractère (ou ensemble) précédent peut apparaitre plus d'une fois
    [\.,] soit un . soit un ,
    [0-9]+ suivie de chiffres puis
    $ la fin de la ligne

    Voila l'ultime solution (qui peut être limite trop, mais mieux vaut trop que pas assez J'espère que ça t'aide un peu ^^

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    boujour,
    merci tous pour votre aide, mon problème a été résolu d'une façon optimale
    merci Ryants pour ta solution détaillée
    @+

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/07/2006, 08h40
  2. insert un caractère dans un fichier text.
    Par toctoc dans le forum Delphi
    Réponses: 5
    Dernier message: 06/07/2006, 08h36
  3. Réponses: 3
    Dernier message: 07/06/2006, 14h40
  4. Réponses: 3
    Dernier message: 27/06/2005, 16h24
  5. Réponses: 5
    Dernier message: 25/01/2005, 14h26

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