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

edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 6 févr. 2016 à 21:21 - Dernière réponse : edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention
- 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 ?
Afficher la suite 

5 réponses

Répondre au sujet
NHenry 14057 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 14 février 2018 Dernière intervention - 6 févr. 2016 à 21:29
0
Utile
3
Nouvelle ligne dans ton fichier \r\n
Nouvelle ligne dans ton commentaire \n
probablement.
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 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)
Whismeril 11048 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 février 2018 Dernière intervention > edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 7 févr. 2016 à 08:31
bonjour, je t'ai répondu sur les virgules....
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention > Whismeril 11048 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 février 2018 Dernière intervention - 10 févr. 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)
Commenter la réponse de NHenry
Whismeril 11048 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 février 2018 Dernière intervention - 6 févr. 2016 à 21:59
0
Utile
Bonsoir,

sinon à la place du stream, tu peux utiliser File.ReadAllLines()
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.