[DEBUTANT] Caractere echappement dans un fichier

Résolu
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 - 7 nov. 2008 à 11:41
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre 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

13 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
7 nov. 2008 à 15:55
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)
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 nov. 2008 à 12:28
Hello,
Pourquoi tu n'écris pas ton fichier avec WriteLine?
Au lieu de faire un write avec les \r\n ?

<hr />
-Blog-
-WebSite-
0
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 3
7 nov. 2008 à 13:08
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.
:)
0
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 3
7 nov. 2008 à 13:19
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 3
7 nov. 2008 à 13:56
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.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
7 nov. 2008 à 14:45
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)
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
7 nov. 2008 à 14:46
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
---------------------
0
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 3
7 nov. 2008 à 14:59
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
0
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 3
7 nov. 2008 à 15:18
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 nov. 2008 à 15:32
Avec Environment.NewLine?
Mais bon, si tu écris avec WriteLine, pas de problème non?

<hr />
-Blog-
-WebSite-
0
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 3
7 nov. 2008 à 15:47
Ben le truc c est que je ne vais pas à la ligne à chaque fois. Je ne vais que quand je rencontre un \r\n...
0
renyone Messages postés 71 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 12 avril 2010 3
7 nov. 2008 à 16:48
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 ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 nov. 2008 à 20:33
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-
0
Rejoignez-nous