C#, Replace, Javascript et quote

Il est courant de devoir appeler une fonction javascript contenant une quote. Il faut alors échapper cet apostrophe (quote) par un antislash.

alert('Vous êtes sur le Royto\'s Blog');

En asp.net, on peut lancer un script après le chargement d’une page via la méthode Page.ClientScript.RegisterStartupScript.

this.ClientScript.RegisterStartupScript(this.GetType(), ScriptName, »<script>alert(‘Vous êtes sur le Royto\’s Blog’);</script> »);

Mon problème était que je construit mon message d’erreur dynamiquement et je voulait remplacer tous les apostrophe (‘) de mon message par antislash apostrophe (/’).

Facile me dirait vous.

Il suffit de faire :

msg.Replace("'", "\'");//-> Vous êtes sur le Royto's Blog

mais cela ne fonctionne pas car est également le caractère d’échappement en C#.

Bon il suffit alors de faire

msg.Replace("'", "\\\'");//-> Vous êtes sur le Royto\'s Blog

mais cela ne fonctionne pas non plus.

L’astuce vient du fait d’utiliser x27 qui est le code hexadécimale de l’apostrophe. Cela donne donc :
this.ClientScript.RegisterStartupScript(this.GetType(), ScriptName,<script>alert(‘ » + msg.Replace(« ‘ », « \x27 »)+ « ‘);</script>);

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *