web-dev-qa-db-fra.com

Transformer un guillemet simple en un guillemet simple échappé dans une chaîne

Cela me fait mal de demander cela, mais, pour une raison quelconque, je n'ai pas réussi à faire fonctionner cela (il est tard dans la journée, oui, c'est mon excuse).

Disons que j'ai cette chaîne:

s = "John's book."

En utilisant la méthode replace de l'objet String, je veux la transformer en ceci:

s = "John\'s book."

Je m'attendais à ce que ce code me donne ce que je veux:

s = s.Replace("'", "\\'")

Mais cela se traduit par:

"John\\'s book."
33
Justin Helgerson

Faites ceci pour ne pas avoir à y penser:

s = s.Replace("'", @"\'");
67
BeemerGuy

J'ai une fonction rapide et sale pour échapper du texte avant de l'utiliser dans une clause d'insertion mysql, cela pourrait aider:

    public static string MySqlEscape(Object usString)
    {
        if (usString is DBNull)
        {
            return "";
        }
        else
        {
            string sample = Convert.ToString(usString);
            return Regex.Replace(sample, @"[\r\n\x00\x1a\\'""]", @"\$0");
        }
    }
4
JohnP

Juste pour montrer une autre solution possible si cela concerne MVC.NET (MVC5 +):

var data= JSON.parse('@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.memberObj)))');

Cela vous permet d'échapper ET de passer des données aux vues en JavaScript. La partie clé est:

HttpUtility.JavaScriptStringEncode
3
Richard Duerr

Le plus simple serait

Server.HtmlEncode(varYourString);