StreamReader: retour chariot et new line [Résolu]

Signaler
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
-
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
-
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

Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Nouvelle ligne dans ton fichier \r\n
Nouvelle ligne dans ton commentaire \n
probablement.
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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)
Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
551 >
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016

bonjour, je t'ai répondu sur les virgules....
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2 >
Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021

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)
Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
551
Bonsoir,

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