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

renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 11:41 - Dernière réponse : cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention
- 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 

13 réponses

Répondre au sujet
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 7 nov. 2008 à 15:55
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SharpMao
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 7 nov. 2008 à 12:28
0
Utile
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 13:08
0
Utile
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 13:19
0
Utile
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 13:56
0
Utile
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
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 7 nov. 2008 à 14:45
0
Utile
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
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 7 nov. 2008 à 14:46
0
Utile
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 14:59
0
Utile
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 15:18
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 7 nov. 2008 à 15:32
0
Utile
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 15:47
0
Utile
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 7 nov. 2008 à 16:48
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 7 nov. 2008 à 20:33
0
Utile
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.