Condividi tramite


Testo letterale stringa non elaborato- """ in valori letterali stringa

Un valore letterale stringa non elaborato inizia e termina con un minimo di tre caratteri virgolette doppie ("):

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

I valori letterali stringa non elaborati possono estendersi su più righe:

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

Le regole seguenti regolano l'interpretazione di un valore letterale stringa non elaborata su più righe:

  • Le virgolette di apertura devono essere gli ultimi caratteri non vuoti nella riga e le virgolette di chiusura devono essere i primi caratteri non spazi vuoti sulla riga.
  • Qualsiasi spazio vuoto a sinistra delle virgolette di chiusura viene rimosso da tutte le righe del valore letterale stringa non elaborato.
  • Qualsiasi spazio vuoto dopo le virgolette di apertura sulla stessa riga viene ignorato.
  • Nel valore letterale stringa sono incluse solo righe che seguono le virgolette di apertura.
  • Se uno spazio vuoto precede il delimitatore finale nella stessa riga, il numero esatto e il tipo di spazi vuoti (ad esempio, spazi e tabulazioni) devono esistere all'inizio di ogni riga di contenuto. In particolare, uno spazio non corrisponde a una scheda orizzontale e viceversa.
  • La nuova riga prima delle virgolette di chiusura non è inclusa nella stringa letterale.

Suggerimento

Visual Studio e C# Dev Kit forniscono alcune funzionalità di convalida e di evidenziazione della sintassi quando i valori letterali stringa non elaborati contengono dati JSON o espressioni regolari.

Gli strumenti analizzano il testo. Se gli strumenti hanno la certezza che il testo rappresenta JSON o un'espressione regolare, l'editor fornisce la colorazione della sintassi.

È possibile migliorare l'esperienza aggiungendo un commento sopra la dichiarazione che indica il formato:

  • // lang=json indica che il valore letterale stringa non elaborato rappresenta i dati JSON.
  • // lang=regex indica che il valore letterale stringa non elaborato rappresenta un'espressione regolare.

Quando un valore letterale stringa non elaborato viene usato come argomento in cui il parametro usa per System.Diagnostics.CodeAnalysis.StringSyntaxAttribute indicare un formato, questi strumenti convalidano il valore letterale stringa non elaborato per alcuni dei tipi di formato. Sono supportati sia JSON che regex.

Per alcuni formati, il commento o l'attributo abilita i suggerimenti di codice offrono correzioni per i valori letterali stringa in base al formato.

Potrebbe essere necessario creare un valore letterale stringa non elaborato con tre o più caratteri virgolette doppie consecutive. I valori letterali stringa non elaborati possono iniziare e terminare con una sequenza di almeno tre caratteri tra virgolette doppie. Quando il valore letterale stringa contiene tre virgolette doppie consecutive, si inizia e termina il valore letterale stringa non elaborato con quattro caratteri virgolette doppie:

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

Se è necessario iniziare o terminare un valore letterale stringa non elaborato con caratteri virgolette, usare il formato a più righe:

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

I valori letterali stringa non elaborati possono essere combinati anche con stringhe interpolate per incorporare i caratteri { e } nella stringa di output. Si usano più caratteri $ in un valore letterale stringa non elaborata interpolata per incorporare i caratteri { e } nella stringa di output senza eseguirne l'escape.

Il contenuto del valore letterale stringa non elaborato non deve contenere un set di caratteri " contigui la cui lunghezza è uguale o maggiore della lunghezza del delimitatore letterale stringa non elaborata. Ad esempio, le stringhe """" """ """" e """"""" """""" """"" """" """ """"""" sono ben formate. Tuttavia, le stringhe """ """ """ e """ """" """ sono in formato non corretto

Vedi anche