C# Replace

cybers7119 Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 janvier 2009 - 19 janv. 2009 à 23:53
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 20 janv. 2009 à 07:47
Bonjour à tous,

Je suis en train d'essayer de lire des données dans un fichier texte, de modifier leur formalisme et de les réécrire ensuite dans un autre fichier texte.
Ces trois phases fonctionnent à merveille... à une petite exception près.

A l'origine, chaque ligne du fichier d'origine contient des données comme celles-ci :

DataA\tDataB\tDataC\tDataD\t\n

En gros, chaque ligne contient des données séparées par des tabulations, et se terminant par une tabulation suivie d'un retour à la ligne.
Ce que je souhaite faire, c'est transformer toutes les tabulations en virgules (j'ai utilisé la méthode Replace, et ça marche impec), et ensuite, de transformer les deux derniers caractères (donc, une virgule suivie d'un retour à la ligne) par un simple retour à la ligne. Au final, je dois avoir ça :

DataA,DataB,DataC,DataD\n

J'ai donc utilisé le code suivant, qui modifie la ligne et que j'appelle à chaque lecture de ligne (ici, la variable "line" désigne la ligne que je lis) :
string splitLine = line.Replace("\t", ",");
splitLine = splitLine.Replace(",\n","\n");

Or, si le premier Replace fonctionne, j'ai l'impression que le deuxième déconne : à la fin de chaque ligne, je me retrouve toujours avec la virgule suivie du retour à la ligne :

DataA,DataB,DataC,DataD,\n

Quelqu'un aurait une solution, par hasard ? Merci d'avance.

1 réponse

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
20 janv. 2009 à 07:47
Hello,

Juste une question,

Comment lis-tu les lignes de ton fichier ?

Si tu utilises un StreamReader, et que tu fais un readline, les \n ne sont pas dans la ligne.
De plus, si ton fichier provient d'un programme windows, tu devrais avoir "\r\n" à la fin de ta ligne, et pas seulement "\n"

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0