String bruta C#

Resumo : neste tutorial, você aprenderá sobre literais de string bruta do C# que foram introduzidos no C# 11.

Introdução às strings brutas C#

Literais de string C# exigem escape de caracteres especiais e delimitadores. Portanto, é difícil construir strings literais especialmente para expressões regulares, bem como XML e JSON. Por exemplo:

var path = "C:\temp\no.txt";

Console.WriteLine(path);Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, a \tguia significa e \nsignifica nova linha. Ele gera o seguinte para o console:

C:      emp
o.txtLinguagem de código:  CSS  ( css )

Para consertar isso, você precisa usar uma string literal prefixando a string com o @caractere:

var path = @"C:\temp\no.txt";

Console.WriteLine(path);Linguagem de código:  JavaScript  ( javascript )

Além disso, se uma string contiver aspas ", você precisará escapar dela usando os \caracteres. Por exemplo:

var response = "{ \"name\": \"John Doe\"}";
Console.WriteLine(response);Linguagem de código:  JavaScript  ( javascript )

A string fica difícil de ler.

O C# 11 introduziu string bruta para superar os problemas. Uma string bruta usa um delimitador flexível de início e fim para evitar conflito com o conteúdo da string.

Uma string bruta começa com um mínimo de três aspas """e é opcionalmente seguida por uma nova linha, o conteúdo da string, e termina com o mesmo número de aspas.

Por exemplo:

var json = """{ "name": "John Doe"}""";
Console.WriteLine(json);Linguagem de código:  JavaScript  ( javascript )

Saída:

{ "name": "John Doe"}Linguagem de código:  JSON/JSON com comentários  ( json )

Se a string em si puder usar três aspas, então a string bruta poderá ter delimitadores iniciais/finais mais longos, que são quatro aspas como esta:

var s = """" C# raw string uses a minimum of """  """";
Console.WriteLine(s);Linguagem de código:  PHP  ( php )

Saída:

C# raw string uses a minimum of """Linguagem de código:  PHP  ( php )

Literais de string bruta de múltiplas linhas

Literais de string bruta em C# suportam strings multilinhas. Por exemplo:

var json = """
    { 
        "name": "John Doe",
        "address": {
            "home": "4000 N. 1st street",
            "work": "101 N. 1st street"
        }
    }
    """;
Console.WriteLine(json);Linguagem de código:  PHP  ( php )

Saída:

{
    "name": "John Doe",
    "address": {
        "home": "4000 N. 1st street",
        "work": "101 N. 1st street"
    }
}Linguagem de código:  JSON/JSON com comentários  ( json )

Os literais de string bruta de múltiplas linhas seguem estas regras:

  • As aspas de abertura e fechamento de uma string literal bruta de múltiplas linhas devem estar em linhas separadas.
  • Qualquer espaço em branco após a citação de abertura na mesma linha é ignorado.
  • Linhas somente com espaços em branco após as aspas de abertura são incluídas na string literal.
  • Qualquer espaço em branco à esquerda das aspas de fechamento é removido de todas as linhas da string literal bruta.

Interpolação de string bruta

Literais de string bruta também suportam interpolação de string que substitui as variáveis ​​e expressões dentro da string por seus valores.

O exemplo a seguir causa um erro devido a algo inesperado {}no formato JSON:

var name = "John Doe";
var json = $""" {"Name": "{name}" } """;

Console.WriteLine(json);Linguagem de código:  JavaScript  ( javascript )

Para corrigir isso, você precisa cercar a variável com chaves duplas de abertura e fechamento {{}}. Além disso, você precisa usar $$caracteres duplos:

var name = "John Doe";
var json = $$""" { "Name": "{{name}}" } """;

Console.WriteLine(json);Linguagem de código:  JavaScript  ( javascript )

Saída:

{ "Name": "John Doe" }Linguagem de código:  JSON/JSON com comentários  ( json )

Resumo

  • Use um mínimo de abertura e fechamento """para formar uma string literal bruta.
  • Literais de string bruta em C# suportam strings multilinhas e interpolações.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *