StreamReader: retour chariot et new line

Résolu
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 - 6 févr. 2016 à 21:21
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 - 10 févr. 2016 à 11:20
Bonjour,
J'ai un gros problème que je n'arrive absolument pas à résoudre car je ne sais pas d'où vient l'erreur !

J'ai un fichier csv séparé par des virgules. Ce fichier csv contient un champ commentaire. Il arrive que ce champ commentaire comporte des retours chariot ! Il ne faut donc absolument pas que le Reader considère ce type de retour chariot comme un retour à la ligne !

Au départ je pensais qu'il suffisait de faire la différence entre /n et /r mais ça ne fonctionne qd même pas !

Le code suivant me met une ligne même pour un retour chariot...
            StreamReader reader = new StreamReader(File.OpenRead(path.ToString()));
            Dictionary<string, int> dico = new Dictionary<string, int>();
            string[] s = reader.ReadToEnd().Split('\n');


Je me demande si je dois pas changer qqchose dans l'initialisation du StreamReader (options d'encodage?)

Ce qui est étrange c'est que si j'ouvre le fichier css dans le bloc note, j'obtiens une ligne par enregistrement (donc pas de retour chariot même pour les commentaires) et avec word, j'ai des retour chariot !

Une explication ?
A voir également:

2 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
6 févr. 2016 à 21:29
Nouvelle ligne dans ton fichier \r\n
Nouvelle ligne dans ton commentaire \n
probablement.
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
6 févr. 2016 à 22:30
Merci beaucoup, c'était la solution
(bon j'ai tjrs le problème qu'il détecte les virgules des commentaires comme marque de division... mais bon)
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656 > edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016
7 févr. 2016 à 08:31
bonjour, je t'ai répondu sur les virgules....
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2 > Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024
Modifié par edwinzap le 10/02/2016 à 11:20
Oui ça fonctionne mais je ne suis pas vraiment satisfait. Juste pour pouvoir splitter correctement, je dois changer les virgules en un autre caractère puis faire le chemin inverse après avoir splitter. Ça me semble un peu ridicule mais c'est la seule solution que j'ai trouvée pour l'instant (grâce à ton aide)
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
6 févr. 2016 à 21:59
Bonsoir,

sinon à la place du stream, tu peux utiliser File.ReadAllLines()
0
Rejoignez-nous