Compartir a través de


Texto de literal de cadena sin formato: """ en literales de cadena

Un literal de cadena sin formato comienza y termina con un mínimo de tres caracteres de comillas dobles (").

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

Los literales de cadena sin formato pueden contener varias líneas:

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

Las reglas siguientes rigen la interpretación de un literal de cadena sin formato de varias líneas:

  • Las comillas de apertura deben ser los últimos caracteres que no sean de espacio en blanco en su línea y las comillas de cierre deben ser los primeros caracteres que no sean de espacio en blanco en su línea.
  • Los espacios en blanco a la izquierda de las comillas de cierre se quitan de todas las líneas del literal de cadena sin formato.
  • Se omite cualquier espacio en blanco que siga las comillas de apertura en la misma línea.
  • Las líneas de espacio en blanco que siguen a la comilla de apertura se incluyen en el literal de cadena.
  • Si un espacio en blanco precede al delimitador final de la misma línea, el número exacto y el tipo de caracteres de espacio en blanco (por ejemplo, espacios frente a pestañas) deben existir al principio de cada línea de contenido. En concreto, un espacio no coincide con una pestaña horizontal y viceversa.
  • La nueva línea antes de las comillas de cierre no se incluye en la cadena literal.

Sugerencia

Visual Studio y el Kit de desarrollo de C# proporcionan algunos resaltados de validación y sintaxis cuando los literales de cadena sin procesar contienen datos JSON o expresiones regulares.

Las herramientas analizan el texto. Si las herramientas tienen confianza en que el texto representa JSON o una expresión regular, el editor proporciona colores de sintaxis.

Puede mejorar esa experiencia agregando un comentario encima de la declaración que indica el formato:

  • // lang=json indica que el literal de cadena sin formato representa los datos JSON.
  • // lang=regex indica que el literal de cadena sin formato representa una expresión regular.

Cuando se usa un literal de cadena sin formato como argumento donde el parámetro usa System.Diagnostics.CodeAnalysis.StringSyntaxAttribute para indicar un formato, estas herramientas validan el literal de cadena sin formato para algunos de los tipos de formato. Se admiten JSON y regex.

Para algunos formatos, el comentario o el atributo habilitan correcciones de ofertas de sugerencias de código para literales de cadena en función del formato.

Es posible que tenga que crear un literal de cadena sin formato que tenga tres o más caracteres de comillas dobles consecutivas. Los literales de cadena sin formato pueden comenzar y terminar con una secuencia de al menos tres caracteres de comillas dobles. Cuando el literal de cadena contiene tres comillas dobles consecutivas, el literal de cadena sin formato se inicia y finaliza con cuatro caracteres de comillas dobles:

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

Si necesita iniciar o finalizar un literal de cadena sin formato con caracteres de comillas, use el formato de varias líneas:

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

Los literales de cadena sin procesar también pueden combinarse con cadenas interpoladas para incrustar los caracteres { y } en la cadena de salida. Puede usar varios caracteres $ en un literal de cadena sin formato interpolada para insertar caracteres { y } en la cadena de salida sin escaparlos.

El contenido del literal de cadena sin formato no debe contener un conjunto de caracteres contiguos " cuya longitud sea igual o superior a la longitud del delimitador del literal de cadena sin formato. Por ejemplo, las cadenas """" """ """" y """"""" """""" """"" """" """ """"""" están bien formadas. Sin embargo, las cadenas """ """ """ y """ """" """ están mal formadas

Consulte también