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 :

Recherche de chaîne de car. et remplacement [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Recherche de chaîne de car. et remplacement
    Salutation,

    Je débute en C# et j'ai une petite application à faire, mais je galère sur une phase de recherche de chaîne de caractère et remplacement:

    Je dois aller chercher dans une chaîne de caractère (se trouvant dans un fichier) de ce type:
    PR4100000005501PER C2 20130208000000R55034205 20130101 471 I 00004400+ 2205

    une chaîne bien précise :
    2012121720130116471 I

    pour ensuite la modifier en :

    20130101+'8 espaces'+471 I

    Je dois ainsi modifier une chaîne commençant par "201212" et finissant par " I" (le chiffre juste avant le I varie, on ne peut donc pas en prendre compte)
    je suis aller voir du coté de Regex mais rien ne fonctionne, y t'il une autre méthode, par exemple donner le début et la fin d'une chaîne et ce peut importe sa longeur, et la récupérer pour modifier les caractères?

    ou bien encore trouver la chaîne par un début et récupérer la chaîne jusqu’à 16 caractères

    j'utilise StreamReader et StreamWriter pour modifier le fichier.

  2. #2
    Membre habitué Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    Je suis certain que c'est possible avec les Regex et que ce serait très propre.
    Sinon, pour faire ce que vous décrivez sans les Regex, je pense que vous devriez jetter un oeil du coté des methodes suivantes : maChaine.StartsWith() ; maChaine.EndsWith() et maChaine.Substring() .

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Points : 57
    Points
    57
    Par défaut
    Salut,
    tu peux recuperer ce que tu lis dans un string utiliser les REGEX http://msdn.microsoft.com/fr-fr/libr...ons.regex.aspx

    faire tes modifications et ecraser le texte de ton fichier

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Merci de vos réponses,

    J'ai oublié de préciser une chose c'est que le fichier contient beaucoup de lignes (comme celle que j'ai mise au début), qu'il faut faire les modifs pour chaque ligne et que évidemment, la nouvelle chaîne remplace l'ancienne (avec tout ce qui est devant et derrière, le gros pavé de caractères)

    PR4100000005501PER C2 20130208000000R55034205 2013031720130116471 I 00004400+ 2205
    PR4100000005601PER C2 20130208000000R55034205 2013031720130116459 I 00000140+ 2205

    devient:

    PR4100000005501PER C2 20130208000000R55034205 20130401________471 I 00004400+ 2205
    PR4100000005601PER C2 20130208000000R55034205 20130401________459 I 00000140+ 2205


    [EDIT] j'ai trouvé mon expression régulière :

    @"(201303)[0-9]{9}"

    par contre vu que j'utilise StreamWriter, je peut utiliser facilement le replace regex?

    [EDIT2]

    J'ai trouvé, suffisait juste de lire un peu le MSDN ...

    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
     
    StreamReader sr = new StreamReader(pathRead);
    s_line = sr.ReadToEnd();
     
    string pattern = @"(" + textBox.Text + ")[0-9]{10}"; // Regex (Expression régulières)
     
    if (Regex.IsMatch(s_line, pattern))
    {                    
         s_line = Regex.Replace(s_line, pattern, textBox.Text + "01        ");
     
         sr.Close();
     
         // Ecriture du fichier
         StreamWriter sw = new StreamWriter(pathWrite, false);
     
         sw.Write(s_line);
     
         sw.Close();
     
         // Fin du processus
          MessageBox.Show("Terminé");
    }

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

Discussions similaires

  1. Rechercher une chaîne dans une autre
    Par Nethervoid21 dans le forum Langage
    Réponses: 3
    Dernier message: 17/11/2006, 16h58
  2. Recherche de chaîne
    Par ClaudeG dans le forum Access
    Réponses: 34
    Dernier message: 15/09/2006, 12h38
  3. Réponses: 2
    Dernier message: 22/04/2006, 09h32
  4. Rechercher une chaîne de caractère dans une série de fichier
    Par Edoxituz dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/02/2006, 12h51
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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