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

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

Votre réponse

2 réponses

Messages postés
14317
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
0
Merci
Nouvelle ligne dans ton fichier \r\n
Nouvelle ligne dans ton commentaire \n
probablement.
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
-
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
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
> edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
-
bonjour, je t'ai répondu sur les virgules....
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
> Whismeril
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
-
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
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
0
Merci
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.