StreamReader: retour chariot et new line

Résolu
edwinzap
Messages postés
159
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
159
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 ?

2 réponses

NHenry
Messages postés
14944
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
161
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
159
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
17486
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
5 juillet 2022
600 > edwinzap
Messages postés
159
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
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2 > Whismeril
Messages postés
17486
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
5 juillet 2022

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
17486
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
5 juillet 2022
600
6 févr. 2016 à 21:59
Bonsoir,

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