Sdílet prostřednictvím


Nezpracovaný text řetězcového literálu – """ v řetězcových literálech

Nezpracovaný řetězcový literál začíná a končí minimálně třemi znaky dvojitých uvozovek ("):

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

Nezpracované řetězcové literály můžou zahrnovat více řádků:

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

Interpretace víceřádkového řetězcového literálu se řídí následujícími pravidly:

  • Počáteční uvozovky musí být poslední neprázdné znaky na řádku a uzavírací uvozovky musí být prvními znaky, které nejsou prázdné na řádku.
  • Všechny prázdné znaky vlevo od uvozovek se odeberou ze všech řádků nezpracovaného řetězcového literálu.
  • Všechny prázdné znaky za levými uvozovkami na stejném řádku se ignorují.
  • Do řetězcového literálu jsou zahrnuty pouze řádky za levou uvozovku.
  • Pokud prázdný znak předchází koncovému oddělovači na stejném řádku, musí na začátku každého řádku obsahu existovat přesný počet a druh prázdných znaků (například mezery a tabulátory). Konkrétně mezera neodpovídá vodorovné tabulátoru a naopak.
  • Nový řádek před uvozovkami není zahrnut v doslovném řetězci.

Návod

Visual Studio a sada C# Dev Kit poskytují určité ověření a zvýraznění syntaxe, když nezpracované řetězcové literály obsahují data JSON nebo regulární výrazy.

Nástroje analyzují text. Pokud nástroje mají jistotu, že text představuje JSON nebo regulární výraz, editor poskytuje barevné zvýrazňování syntaxe.

Toto prostředí můžete vylepšit přidáním komentáře nad deklaraci označující formát:

  • // lang=json označuje nezpracovaný řetězcový literál představuje data JSON.
  • // lang=regex označuje nezpracovaný řetězcový literál představuje regulární výraz.

Pokud se jako argument používá nezpracovaný řetězcový literál, kde parametr používá System.Diagnostics.CodeAnalysis.StringSyntaxAttribute k označení formátu, tyto nástroje ověřují nezpracovaný řetězcový literál pro některé typy formátů. Podporují se JSON i regulární výrazy.

U některých formátů komentář nebo atribut umožňuje návrhy kódu nabízet opravy řetězcových literálů na základě formátu.

Možná budete muset vytvořit nezpracovaný řetězcový literál, který má tři nebo více po sobě jdoucích dvou uvozovek. Nezpracované řetězcové literály můžou začínat a končit sekvencí alespoň tří dvouvozovek. Pokud řetězcový literál obsahuje tři po sobě jdoucí dvojité uvozovky, začnete a ukončíte nezpracovaný řetězcový literál čtyřmi znaky s dvojitými uvozovkami:

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

Pokud potřebujete začít nebo ukončit nezpracovaný řetězcový literál s uvozovkami, použijte víceřádkový formát:

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

Nezpracované řetězcové literály lze také kombinovat s interpolovanými řetězci pro vložení { znaků do } výstupního řetězce. V interpolovaném řetězcovém literálu s nezpracovaným řetězcem použijete více $ znaků k vložení { a } znaků do výstupního řetězce bez jejich zapouzdření.

Obsah nezpracovaného řetězcového literálu nesmí obsahovat sadu souvislých " znaků, jejichž délka je rovna nebo větší než délka řetězcového literálu. Například řetězce """" """ """" a """"""" """""" """"" """" """ """"""" jsou dobře formátované. Řetězce """ """ """ a """ """" """ jsou však špatně vytvořené.

Viz také