OVH Cloud OVH Cloud

Probleme pour remplacer des antislashs...

4 réponses
Avatar
siliklone
Bonjour tt le monde,

Dans mon projet actuellement en cours, j ai une chaine de caratere a
envoyer encadree de guillemets( " ). Vu que dans ma chaine de
caractere j ai aussi des guillemets, j ai recours a la methode replace
pour remplacer tous les " de ma chaine par des \". Jusque la pas de
probleme...

- request.ToString().Replace("\"", "\\\"");

Ca marche tres bien dans ce sens, mais lorsque je veux faire l
operation iuverse sur la chaine que je recois , ca ne marche pas...

- reply.ToString().Replace("\\\"", "\""); // ne modifie rien a ma
chaine...

Chose bizarre que j ai remarque: pour supprimer les \n de mon "reply",
j utilise reply.Replace("\n", "") et non pas reply.Replace("\\n", "").
Or, c est une chose que je ne peux pas faire avec les " (je peux pas
ecrire "\\"" sinon les deux antislashs consecutifs sont interpretes
ensemble).

J espere avoir ete clair, mais j en suis pas sur du tout...

SkN 0o.

4 réponses

Avatar
Phildes
> - reply.ToString().Replace(""", """);
// ne modifie rien a ma chaine...


Etonnant, ceci fonctionne :
String txt1 = "il"fait"beau";
String txt2 = txt1.Replace(""",""");
String txt3 = txt2.Replace(""",""");
Console.WriteLine("textesn"+txt2+"n"+txt3);
=> txt2 comporte des "
=> txt3 comporte des quote simples.

Il faudrait en connaître un peu plus sur votre source.

j utilise reply.Replace("n", "")
et non pas reply.Replace("n", "").


Normal car n est 1 caractère donc n sont 2 caractères '' et 'n'

Si vous comparez avec le guillemet :
" est 1 caractère, " sont 2 caractères '' et d'un guillement de
fermeture de texte.

Philippe




Ptlpn a écrit dans le message :

Bonjour tt le monde,

Dans mon projet actuellement en cours, j ai une chaine de caratere a
envoyer encadree de guillemets( " ). Vu que dans ma chaine de
caractere j ai aussi des guillemets, j ai recours a la methode replace
pour remplacer tous les " de ma chaine par des ". Jusque la pas de
probleme...

- request.ToString().Replace(""", """);

Ca marche tres bien dans ce sens, mais lorsque je veux faire l
operation iuverse sur la chaine que je recois , ca ne marche pas...

- reply.ToString().Replace(""", """); // ne modifie rien a ma
chaine...

Chose bizarre que j ai remarque: pour supprimer les n de mon "reply",
j utilise reply.Replace("n", "") et non pas reply.Replace("n", "").
Or, c est une chose que je ne peux pas faire avec les " (je peux pas
ecrire """ sinon les deux antislashs consecutifs sont interpretes
ensemble).

J espere avoir ete clair, mais j en suis pas sur du tout...

SkN 0o.


Avatar
David Scime
Le 2 Aug 2004 07:31:37 -0700, (Ptlpn) a écrit :

Bonjour tt le monde,

Dans mon projet actuellement en cours, j ai une chaine de caratere a
envoyer encadree de guillemets( " ). Vu que dans ma chaine de
caractere j ai aussi des guillemets, j ai recours a la methode replace
pour remplacer tous les " de ma chaine par des ". Jusque la pas de
probleme...

- request.ToString().Replace(""", """);

Ca marche tres bien dans ce sens, mais lorsque je veux faire l
operation iuverse sur la chaine que je recois , ca ne marche pas...

- reply.ToString().Replace(""", """); // ne modifie rien a ma
chaine...

Chose bizarre que j ai remarque: pour supprimer les n de mon "reply",
j utilise reply.Replace("n", "") et non pas reply.Replace("n", "").
Or, c est une chose que je ne peux pas faire avec les " (je peux pas
ecrire """ sinon les deux antislashs consecutifs sont interpretes
ensemble).

J espere avoir ete clair, mais j en suis pas sur du tout...

SkN 0o.



Il ne faut pas oublier qu'il faut doubler les backslachs quand tu veux
l'afficher.. si à l'écran tu veux dans ton string il va falloir
mettre "\"...
Ca devrait t'aider.. ou alors j'ai mal compris ta question..

David Scime

Avatar
Antoine F.
Bonjour,

Ce code fonctionne et fait ce que vous vous essayez de faire:

- récupérer une chaîne contenant des guillemets
- échapper les guillemets
- dé-échapper les guillemets

---------------------------------------------------------------
string s = Console.ReadLine();
Console.WriteLine("recu: " + s);
s = s.Replace(""", """);
Console.WriteLine("sans guillemets: " + s);
s = s.Replace(""", """);
Console.WriteLine("sans slashs: " + s);
---------------------------------------------------------------

.Antoine
Avatar
David Scime
Le 2 Aug 2004 07:31:37 -0700, (Ptlpn) a écrit :

Bonjour tt le monde,

Dans mon projet actuellement en cours, j ai une chaine de caratere a
envoyer encadree de guillemets( " ). Vu que dans ma chaine de
caractere j ai aussi des guillemets, j ai recours a la methode replace
pour remplacer tous les " de ma chaine par des ". Jusque la pas de
probleme...

- request.ToString().Replace(""", """);

Ca marche tres bien dans ce sens, mais lorsque je veux faire l
operation iuverse sur la chaine que je recois , ca ne marche pas...

- reply.ToString().Replace(""", """); // ne modifie rien a ma
chaine...

Chose bizarre que j ai remarque: pour supprimer les n de mon "reply",
j utilise reply.Replace("n", "") et non pas reply.Replace("n", "").
Or, c est une chose que je ne peux pas faire avec les " (je peux pas
ecrire """ sinon les deux antislashs consecutifs sont interpretes
ensemble).

J espere avoir ete clair, mais j en suis pas sur du tout...

SkN 0o.




Tu veux donc rajouter devant guillemets par un backslach. et ensuite
pouvoir le retirer..

Mais si j'ai bien compris ce que tu souhaites c'est de mettre ta
chaine entre guillemets.. dans ce cas pourquoi n'utilises-tu pas la
méthode Insert..
Exemple..:
string s = "hello";
s = s.Insert(0, """);
s = s.Insert(s.Length, """);
Console.WriteLine(s);

----> "hello"

Si tu souhaites également retirer les guillemets de la chaines..
string s = "hel"lo";
s = s.Replace("", "" );
s = s.Insert(0, """);
s = s.Insert(s.Length, """);
Console.WriteLine(s);

----> "hello"

Est-ce cela?
Sinon donne nous un exemple plus parlant..
David Scime