Escape doubles guillemets dans la chaîne

Les guillemets doubles peuvent être évités comme ceci:

ssortingng test = @"He said to me, ""Hello World"". How are you?"; 

Mais cela implique d’append du caractère " à la chaîne. Existe-t-il une fonction C # ou une autre méthode pour échapper aux guillemets, de sorte qu’aucune modification de chaîne n’est requirejse?”

    Non.

    Soit vous utilisez des littéraux de chaîne tels quels, soit vous échappez à la barre oblique inverse.

     ssortingng test = "He said to me, \"Hello World\" . How are you?"; 

    La chaîne n’a pas changé dans les deux cas – il y a un seul échappé " . Ceci est juste un moyen de dire à C # que le caractère fait partie de la chaîne et non un terminateur de chaîne.

    Vous pouvez utiliser la barre oblique inverse de toute façon;

     ssortingng str = "He said to me, \"Hello World\". How are you?"; 

    Il imprime;

     He said to me, "Hello World". How are you? 

    qui est exactement les mêmes empreintes avec;

     ssortingng str = @"He said to me, ""Hello World"". How are you?"; 

    Voici un DEMO .

    " fait toujours partie de votre chaîne.

    Consultez les Escape Sequences et les Ssortingng literals de Ssortingng literals de MSDN .

    En C #, vous pouvez utiliser la barre oblique inverse pour mettre des caractères spéciaux dans votre chaîne. Par exemple, pour mettre “, vous devez écrire \”. Il y a beaucoup de caractères que vous écrivez en utilisant la barre oblique inverse: barre oblique inverse avec un nombre:

    • \ 000 null
    • \ 010 retour arrière
    • \ 011 onglet horizontal
    • \ 012 nouvelle ligne
    • \ 015 retour chariot
    • \ 032 substitut
    • \ 042 citation double
    • \ 047 devis unique
    • \ 134 barre oblique inverse
    • \ 140 accent grave

    Backslash avec un autre personnage

    • \ une cloche (alerte)
    • \ b Retour arrière
    • \ f Formfeed
    • \ n Nouvelle ligne
    • \ r Retour de voiture
    • \ t Onglet horizontal
    • \ v Onglet Vertical
    • \ ‘Guillemet simple
    • \ “Guillemet double
    • \ Backslash
    • \? Point d’interrogation littéral
    • \ ooo Caractère ASCII en notation octale
    • \ x hh Caractère ASCII en notation hexadécimale
    • \ x hhhh Caractère Unicode en notation hexadécimale si cette séquence d’échappement est utilisée dans une constante de caractères larges ou un littéral de chaîne Unicode. Par exemple, WCHAR f = L ‘\ x4e00’ ou WCHAR b [] = L “Le caractère chinois pour un est \ x4e00”.

    Vous vous méprenez à vous échapper.

    Les " caractères supplémentaires font partie du littéral de chaîne, ils sont interprétés par le compilateur comme un simple " .

    La valeur réelle de votre chaîne est toujours He said to me , "Hello World".How are you ? , comme vous le verrez si vous l’imprimez à l’exécution.

    Veuillez expliquer votre problème. Vous dites:

    Mais cela implique d’append du caractère “à la chaîne.

    Quel est ce problème? Vous ne pouvez pas taper ssortingng foo = "Foo"bar""; , car cela invoquera une erreur de compilation. Comme pour l’ ajout , en termes de taille de chaîne, ce n’est pas vrai:

     @"""".Length == "\"".Length == 1