Partager via


Texte de littéral de chaîne brute - """ dans les littéraux de chaîne

Un littéral de chaîne brute commence et finit par trois guillemets doubles au minimum (") :

var singleLine = """This is a "raw string literal". It can contain characters like \, ' and ".""";

Les littéraux de chaîne brute peuvent s’étendre sur plusieurs lignes :

var xml = """
        <element attr="content">
            <body>
            </body>
        </element>
        """;

Les règles suivantes régissent l’interprétation d’un littéral de chaîne brute multiligne :

  • Les guillemets ouvrants doivent être les derniers espaces non blancs sur leur ligne, et les guillemets fermants doivent être les premiers espaces non blancs sur leur ligne.
  • Les espaces blancs situés à gauche des guillemets fermants sont supprimés de toutes les lignes du littéral de chaîne brute.
  • Tout espace blanc suivant les guillemets ouvrants sur la même ligne est ignoré.
  • Les lignes qui ne contiennent que des espaces blancs à la suite du guillemet ouvrant sont incluses dans le littéral de chaîne.
  • Si un espace blanc précède le délimiteur de fin sur la même ligne, le nombre exact et le type de caractères d’espace blanc (par exemple, les espaces et les onglets) doivent exister au début de chaque ligne de contenu. Plus précisément, un espace ne correspond pas à un onglet horizontal, et inversement.
  • La nouvelle ligne avant les guillemets fermants n’est pas incluse dans la chaîne de caractères littérale.

Conseil / Astuce

Visual Studio et le Kit de développement C# fournissent une validation et une mise en surbrillance de syntaxe lorsque les littéraux de chaîne brute contiennent des données JSON ou des expressions régulières.

Les outils analysent le texte. Si les outils ont confiance que le texte représente JSON ou une expression régulière, l’éditeur fournit une coloration de syntaxe.

Vous pouvez améliorer cette expérience en ajoutant un commentaire au-dessus de la déclaration indiquant le format :

  • // lang=json indique que le littéral de chaîne brut représente les données JSON.
  • // lang=regex indique que le littéral de chaîne brut représente une expression régulière.

Lorsqu’un littéral de chaîne brut est utilisé comme argument dans lequel le paramètre utilise pour System.Diagnostics.CodeAnalysis.StringSyntaxAttribute indiquer un format, ces outils valident le littéral de chaîne brute pour certains des types de format. JSON et regex sont pris en charge.

Pour certains formats, le commentaire ou l’attribut active les suggestions de code proposent des correctifs pour les littéraux de chaîne en fonction du format.

Vous devrez peut-être créer un littéral de chaîne brut qui a trois ou plusieurs guillemets doubles consécutifs. Les littéraux de chaîne brute peuvent commencer et finir par une séquence d’au moins trois guillemets doubles. Quand votre littéral de chaîne contient trois guillemets doubles consécutifs, vous devez commencer et finir le littéral de chaîne brute par quatre guillemets doubles :

var moreQuotes = """" As you can see,"""Raw string literals""" can start and end with more than three double-quotes when needed."""";

Si vous devez commencer ou finir un littéral de chaîne brute par des guillemets, utilisez le format multiligne :

var MultiLineQuotes = """"
               """Raw string literals""" can start and end with more than three double-quotes when needed.
               """";

Les littéraux de chaîne brute peuvent également être combinés avec des chaînes interpolées pour intégrer les caractères { et } dans la chaîne de sortie. Vous pouvez utiliser plusieurs caractères $ dans un littéral de chaîne brute interpolée pour incorporer les caractères { et } dans la chaîne de sortie sans qu’ils fassent l’objet de séquences d’échappement.

Le contenu du littéral de chaîne brute ne doit pas contenir un ensemble de caractères " contigus dont la longueur est égale ou supérieure à la longueur du délimiteur du littéral de chaîne brute. Par exemple, les chaînes """" """ """" et """"""" """""" """"" """" """ """"""" sont bien formées. Toutefois, les chaînes """ """ """ et """ """" """ sont mal formées

Voir aussi