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 :

Remplacement de caractère d'un fichier à partir d'une position ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 17
    Par défaut Remplacement de caractère d'un fichier à partir d'une position ?
    Salut.

    J'ai une petite question un peu bête... et je tourne autour sans y parvenir.
    Disons que mon gros problème en programmation / scripting à toujours été la manipulation de string...

    Mon programme affiche le résultat de différentes actions possibles dans une richtextbox. Ce résultat est sous la forme simplifiée suivante :
    14/11/2018 11:29:30 : hostname : action en cours de réalisation...
    14/11/2018 11:29:35 : hostname : action réalisée avec succès.
    14/11/2018 11:29:35 : Toutes les actions ont été réalisées !

    Maintenant, j'aimerai avoir la possibilité d'exporter ce résultat en CSV et en TXT. Donc pour le txt, aucun soucis, rien de plus simple. Mais pour le csv, j'ai quelques problèmes. Le but étant de remplacer tout les ":" par des ";", afin que dans le fichier de sortie, ce soit sous cette forme (séparateur point-virgule donc) :
    14/11/2018 11:29:30;hostname;action en cours de réalisation...
    14/11/2018 11:29:35;hostname;action réalisée avec succès.
    14/11/2018 11:29:35;Toutes les actions ont été réalisées !

    Je pense que vous l'aurez devinez, si je lui dis de remplacer mes ":" par des ";" , l'heure s'en trouve également changée (11;29;30).

    comment pourrais-je remplacer des caractères à compter de la 19ème position de chaque ligne ?

    Voila mon bout de code du bouton export à l'heure actuelle, qui exporte juste le contenu, sans manipulation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            private void Btn_csvExport_Click(object sender, RoutedEventArgs e)
            {
                String file = @"C:\TEMP\Test.csv";
                TextWriter writer = new StreamWriter(file);
                string richText = new TextRange(rtb_logs.Document.ContentStart, rtb_logs.Document.ContentEnd).Text;
     
                writer.Write(richText);
                writer.Close();
                Process.Start(file);
            }

    Merci par avance.

  2. #2
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    De ce que je vois de ton exemple tes items ne sont pas séparés par des ":" mais par des " : ", i.e. avec des espaces ; du coup il te suffit de faire un string.Replace sur le séparateur complet pour ne pas prendre en compte les ":" des heures:minutes:secondes. Sinon il faut regarder du côté des méthodes Substring, Split, Trim et Join.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var line = "14/11/2018 11:29:30 : hostname : action en cours de réalisation...";
    var csv = line.Substring(0, 19) + string.Join(";", line.Substring(19).Split(':').Select(s => s.Trim()));
    L'étape d'après c'est les regex...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 17
    Par défaut
    Quand je disais que c'était un problème "bête"...

    C'est exactement ça, il y a des espaces.... Ca fait un moment que j'essaye de contourner le soucis, mais effectivement je vais faire un replace sur " : " au lieu de ":" tout simplement !

    Je voulais impérativement éviter les regex, car à part les syntaxes basiques, j'y comprend rien, et je crois que j'y comprendrai jamais rien, malgré leur puissance potentielle

    En tout cas merci beaucoup.

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

Discussions similaires

  1. [XL-2016] Rechercher une valeur dans un fichier à partir d'une position
    Par Nono71 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/03/2017, 22h32
  2. [batch] Remplacement de caractères dans un fichier
    Par Antoun dans le forum Windows
    Réponses: 18
    Dernier message: 25/04/2008, 19h14
  3. Remplacer un caractère dans un fichier texte
    Par steelk dans le forum Excel
    Réponses: 36
    Dernier message: 29/01/2008, 16h10
  4. Réponses: 3
    Dernier message: 27/06/2005, 17h24
  5. Réponses: 5
    Dernier message: 25/01/2005, 15h26

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