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 \t
guia significa e \n
significa nova linha. Ele gera o seguinte para o console:
C: emp
o.txt
Linguagem 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.