TOC

This article has been localized into Portuguese by the community.

Operadores:

Operador de interpolação de String

Em outro lugar neste tutorial, você encontrará uma longa descrição do tipo de dados da string, porque lidar com o texto é uma tarefa tão importante. Neste artigo, vamos nos concentrar em um operador especial para trabalhar com strings, permitindo que você faça alguns truques extras ao declarar strings. Ele é chamado de interpolação de string (introduzido no C # 6.0) e permitirá que você coloque marcadores especiais em sua string, que o interpretador substituirá mais tarde pelos valores relevantes. Ele funciona muito parecido com o método String.Format() que já discutimos, mas a sintaxe é mais legível e conveniente.

A interpolação de strings pode ser obtida facilmente - basta prefixar a string com um caractere $. Como sempre, vamos pular direto para um exemplo:

string name = "John Doe";
int age = 42;

Console.WriteLine(name + " is " + age + " years old");
Console.WriteLine($"{name} is {age} years old");

Nas duas últimas linhas, fazemos exatamente a mesma coisa: primeiro da maneira tradicional, em que concatenamos uma string usando nossas duas variáveis e, em seguida, usando a interpolação de string. Observe como nos permite injetar variáveis diretamente na string, cercando-a com chaves. E mesmo que isso aconteça dentro de uma string, o compilador irá verificar as variáveis que você está tentando injetar!

Além disso, as variáveis que você usa não precisam ser tipos simples - você também pode usar propriedades de objetos complexos, da mesma forma que faria se estivesse fazendo uma concatenação regular de strings. Aqui está um exemplo:

var user = new
{
    Name = "John Doe",
    Age = 42
};
Console.WriteLine($"{user.Name} is {user.Age} years old");

Strings de Formato

Por padrão, as variáveis que você incluir serão transformadas na representação de string necessária chamando o método ToString(). Mas às vezes você pode estar procurando um pouco mais de controle sobre como cada variável é exibida e, felizmente, isso é muito simples de se fazer, graças às strings de formato. Basta colocar dois pontos (:) depois da variável e depois inserir uma string de formato a ser usada, como neste exemplo:

double daysSinceMillenium = (DateTime.Now - new DateTime(2000, 1, 1)).TotalDays;  
Console.WriteLine($"Today is {DateTime.Now:d} and {daysSinceMillenium:N2} days have passed since the last millennium!");

O resultado será algo como isto, dependendo das configurações do sistema para datas e números:

Today is Friday, June 29, 2018 and 6,754.49 days have passed since the last millenium!

Observe como a data é representada no formato de data por extenso (conforme especificado com a string de formato "D") e o número é bem formatado com mil separadores e dois números decimais, graças à string de formato numérico "N2".

Se você quiser ainda mais controle, poderá alterar as strings de formato padrão para as strings de formato personalizado, por exemplo, para datas:

Console.WriteLine($"Today is {DateTime.Now:yyyy-MM-dd}");

Existem muitas outras maneiras de formatar um DateTime, que você pode usar em uma string interpolada. Para todas as opções, consulte a documentação .

Além das variáveis

Agora incluímos variáveis e até propriedades de objetos em nossas strings e vimos como é fácil formatar as strings resultantes. Mas a interpolação de strings vai além disso, porque você pode ter expressões C # inteiras dentro de suas strings, desde que elas resultem em algo que possa ser anexado a uma string. Um bom exemplo disso é a clássica situação "with ou without the ending s", onde você tem que criar uma string que seja "1 ano de idade" ou "2 anos s old". Você pode fazer isso diretamente com a interpolação de strings, simplesmente usando o operador ternário dentro da string:

string name = "John Doe";
int age = 42;

Console.WriteLine($"{name} is {age} year{(age == 1 ? "" : "s")} old");

Observe como inseri uma instrução if-then-else simples na string, dentro de um conjunto de parênteses. Podemos fazer isso porque o resultado da expressão é uma string - ou vazia ou "s". Você pode fazer matemática também:

Console.WriteLine($"5 + 5 * 2 = {((5 + 5) * 2)}");

Novamente, desde que o resultado da expressão possa ser transformado em uma string, você pode usá-lo em sua string interpolada.

Interpolação de String & amp; Escapando

Você não terá trabalhado com a interpolação de strings por muito tempo antes que uma pergunta muito óbvia venha à mente: Como posso incluir caracteres que tenham um significado específico, por exemplo? chaves, e tê-los tratados literalmente? A resposta para isso é geralmente escapar - o ato de prefixar/postfixing o personagem com outro personagem, para negar o propósito especial. Isto também é verdade para a interpolação de strings, onde as chaves devem ser escritas duas vezes se você quiser que elas sejam tratadas literalmente, assim:

Console.WriteLine($"Insert {name} between curly braces: {{name here}}");

O resultado:

Insert John Doe between curly braces: {name here}

Resumo

Se você já olhou para a concatenação clássica de cordas e pensou que ela é muito desajeitada, você vai adorar a interpolação de cordas! Foi introduzido no C # versão 6.0 e permite escrever texto que inclui variáveis de uma forma muito natural e fácil de ler. Eles também são muito legais em permitir que você integre expressões diretamente nas strings, mas tenha cuidado - em um certo ponto, sua string interpolada pode ser tão avançada que fica mais difícil de ler do que as alternativas.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!