[DEBUTANT] Caractere echappement dans un fichier [Résolu]

Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
- 7 nov. 2008 à 11:41 - Dernière réponse :
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 7 nov. 2008 à 20:33
Bonjour je débute en C# et j'ai un petit souci avec les chaines de caractere.
J'ai un fichier texte dans lequel j'ai ecrit:

toto\r\ntiti;

Mon code principal est : 

StreamReader sr = new StreamReader(@"C:\input.txt");
 StreamWriter sw = new StreamWriter(@"C:\output.txt");

            string line = sr.ReadLine();
            char[] tab = line.ToCharArray();
            sw.Write(line);
            sw.Close();
            sr.Close();

Je pensais obtenir :
toto
titi

mais j'obtiens :
toto\r\ntiti.

Comment faire pour interpreter \r\n comme un retour à une nouvelle ligne ?
Merci
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
7 nov. 2008 à 15:55
3
Merci
Hello,

Une petite précision :

Est-ce que tu as un string qui contient un retour à la ligne et que tu aimerais mettre en DB, ou est-ce que tu as deux string, que tu aimerais les combiner avec un retour  à la ligne entre deux et stocker le tout en DB ?

Dans le 1er cas, tu n'es rien de spécial à faire, tu envoies ton string directement à la DB (avec des  requêtes paramétrées), et le tour est joué.
Quand tu le récupéreras, ta valeur contiendra automatiquement le retour é la ligne.

Dans le 2ème cas, tu fais comme dans le 1er cas, mais en passant comme paramètre une valeur valant
string.Format("{0}{1}{2}",string1,Environment.NewLine,string2);

Ce qui me trouble un peu dans ta question, c'est que tu parles de base de données, mais tu donnes un exemple avec des fichiers.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de SharpMao
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
7 nov. 2008 à 12:28
0
Merci
Hello,
Pourquoi tu n'écris pas ton fichier avec WriteLine?
Au lieu de faire un write avec les \r\n ?

<hr />
-Blog-
-WebSite-
Commenter la réponse de cs_Bidou
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
7 nov. 2008 à 13:08
0
Merci
A la base ce sont des strings que je récupère en base... La c'était juste un exemple. Je veux juste que si ma string vaut "toto\r\ntiti", lorsque j'affiche sa valeur dans un fichier ou sur une console j'obtienne :

toto
titi

et non toto\r\ntiti.

Merci pour vos réponses.
:)
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
7 nov. 2008 à 13:19
0
Merci
Je vais être plus précis parce que j'ai peur de ne pas être clair.
J'ai une source de données (fichier ou base). Dans cette source j'ai une ligne (pour un fichier) ou une colonne (dans une table) qui vaut "toto\r\n".

Si dans mon prog c#, j'ai une string variable = "toto\r\ntiti", lorsque je fais Console.Write(variable) je vais bien obtenir :
toto
titi
Par contre quand je fais : string variable fichier.ReadLine() j'obtiens : variable "toto\\r\\ntiti" et donc un Console.writeline(variable) affiche toto\r\ntiti...

J espere que c est plus clair...
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
7 nov. 2008 à 13:56
0
Merci
Personne n'a une idée ? En fait je veux juste que lorsque je récupère la donnée, ma string prenne la valeur "toto\r\ntiti" et non "toto\\r\\ntiti"...

Merci à vous.
Commenter la réponse de renyone
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
7 nov. 2008 à 14:45
0
Merci
Hello,

\r\n est juste une représentation d'un retour  à la ligne.
Si tu mets dans ton fichier

toto
titi

Avec un retour à la ligne entre deux, tu peux avoir ce que tu veux en faisant un ReadToEnd.
De cette manière, il ne coupera pas les retour à la ligne.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Dernière intervention
19 août 2014
7 nov. 2008 à 14:46
0
Merci
Bonjour,

As-tu essayé avec un simple Replace(..) ?
string text = "[file://\\r\\n \\r\\n]";string text2 text.Replace(@"\r\n", "\r\n");//@"\r\n" "[file://\\r\\n \\r\\n]"

Bonne après midi,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Commenter la réponse de billou_13
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
7 nov. 2008 à 14:59
0
Merci
Merci ca marche :).

Maintenant si on prend le pb inverse. Que doit on ecrire dans le fichier pour que qd on fait un fichier.ReadLine on obtienne directement "toto\r\ntiti" et pas "toto\\r\\ntiti" ?

Merci encore
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
7 nov. 2008 à 15:18
0
Merci
Merci aussi sharpMao.
Mais dans le cas d une donnée en base de donnée stockée par exemple dans une variable de type varchar(50) je ne peux pas "passer à la ligne". Comment ecrire cette donnée en base ?

Merci
Commenter la réponse de renyone
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
7 nov. 2008 à 15:32
0
Merci
Avec Environment.NewLine?
Mais bon, si tu écris avec WriteLine, pas de problème non?

<hr />
-Blog-
-WebSite-
Commenter la réponse de cs_Bidou
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
7 nov. 2008 à 15:47
0
Merci
Ben le truc c est que je ne vais pas à la ligne à chaque fois. Je ne vais que quand je rencontre un \r\n...
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
7 nov. 2008 à 16:48
0
Merci
Merci pour ta réponse Sharp.
En fait j'ai une table en base avec une colonne qu on appelera col de type VARCHAR(50).
J'aimerais juste que quand je récupère cette valeur, j'ai dans ma string "toto\r\n\titi".
Donc que faut il ecrire dans la base ?
Commenter la réponse de renyone
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
7 nov. 2008 à 20:33
0
Merci
Euh, c'est écrit plus haut non?
string.Format("{0}{1}{2}",string1,Environment.NewLine,string2);

J'ai aussi un peu de peine à comprendre ce que tu veux faire exactement ceci dit....

<hr />
-Blog-
-WebSite-
Commenter la réponse de cs_Bidou

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.