Usar interpolação de cadeia de caracteres para construir cadeias de caracteres formatadas
Este tutorial ensina como usar a interpolação de cadeia de caracteres para inserir valores em uma única cadeia de caracteres. Você também aprende a controlar a formatação de texto da cadeia de caracteres de resultado. Você usa seu navegador para escrever e executar código C# e pode ver imediatamente os resultados.
Criar uma cadeia interpolada
Execute o código seguinte na janela interativa. Selecione o botão Inserir modo de foco. Em seguida, digite o seguinte bloco de código na janela interativa (substitua <name>
pelo seu nome) e selecione Executar:
var name = "<name>";
Console.WriteLine($"Hello, {name}. It's a pleasure to meet you!");
Quando você executa o código, Output exibe uma cadeia de caracteres que inclui seu nome na saudação. O argumento string da chamada de método é uma expressão de cadeia de WriteLine caracteres interpolada. É um tipo de modelo que lhe permite construir uma cadeia individual (denominada cadeia de resultado) a partir de uma cadeia que inclui o código incorporado. Expressões de cadeia de caracteres interpoladas são particularmente úteis para inserir valores em uma cadeia de caracteres ou concatenar (unir) várias cadeias de caracteres.
O exemplo acima contém os dois elementos que cada expressão de cadeia de caracteres interpolada deve ter:
Um literal de cadeia que começa com o caráter
$
antes do caráter de abertura de aspas. Não pode haver espaços entre o símbolo$
e o caráter de aspas. (Se você quiser ver o que acontece se incluir um, insira um espaço após o$
caractere na janela interativa e execute o código atualizado. O compilador C# reclama, "Caractere inesperado '$'".)Uma ou mais expressões de interpolação. Uma expressão de interpolação é indicada por uma chave de abertura e fecho (
{
e}
). Pode pôr qualquer expressão de C# que devolva um valor (incluindonull
) dentro das chavetas.
Vamos tentar mais alguns exemplos de interpolação de cadeia de caracteres com alguns outros tipos de dados.
Incluir diferentes tipos de dados
Na etapa anterior, você usou a interpolação de cadeia de caracteres para inserir uma cadeia de caracteres dentro de outra. No entanto, cada expressão de interpolação que faz parte de uma expressão de cadeia de caracteres interpolada pode ser de qualquer tipo de dados. Vamos incluir valores de várias expressões de tipo de dados em uma cadeia de caracteres interpolada.
No exemplo a seguir, primeiro definimos uma tupla que tem Name
, Price
e perPackage
membros. Execute o seguinte código na janela interativa:
var item = (Name: "eggplant", Price: 1.99m, perPackage: 3);
var date = DateTime.Now;
Console.WriteLine($"On {date}, the price of {item.Name} was {item.Price} per {item.perPackage} items.");
Observe que a expressão item.Price
de interpolação na cadeia de caracteres interpolada é resolvida para o texto "1.99" na cadeia de caracteres de resultado. Isso porque, quando o tipo do resultado da expressão não é uma cadeia de caracteres, o resultado é resolvido para uma cadeia de caracteres da seguinte maneira:
Se a expressão de interpolação for avaliada como
null
, uma cadeia de caracteres vazia ("", ou String.Empty) será usada.Se a expressão de interpolação não for avaliada para
null
, normalmente oToString
método da expressão de resultado é chamado.
Na saída deste exemplo, a data é muito precisa (o preço da berinjela não muda a cada segundo) e o valor do preço não indica uma unidade de moeda. Na próxima etapa, você aprenderá como corrigir esses problemas controlando o formato das representações de cadeia de caracteres dos resultados da expressão.
Controlar a formatação de expressões de interpolação
Na etapa anterior, duas cadeias de caracteres mal formatadas foram inseridas na cadeia de caracteres de resultado. Uma foi o valor de data e hora, em que apenas a data estava errada. O segundo era um preço que não indicava sua unidade de moeda. É fácil resolver ambos os problemas. A interpolação de cadeias de caracteres permite especificar cadeias de caracteres de formato que controlam a formatação de tipos específicos. Modifique a chamada para Console.WriteLine
do exemplo anterior para incluir as cadeias de caracteres de formato para as expressões de data e preço, conforme mostrado na linha a seguir:
Console.WriteLine($"On {date:d}, the price of {item.Name} was {item.Price:C2} per {item.perPackage} items");
Você especifica uma cadeia de caracteres de formato seguindo a expressão de interpolação com dois pontos (":") e a cadeia de caracteres de formato. "d" é uma cadeia de formato de data e hora padrão que representa o formato de data curta. "C2" é uma cadeia de formato numérico padrão que representa um número como valor de moeda com dois dígitos a seguir à casa decimal.
Vários tipos nas bibliotecas .NET suportam um conjunto predefinido de cadeias de caracteres de formato. Esses tipos incluem todos os tipos numéricos e os tipos de data e hora. Para obter uma lista completa dos tipos de dados que suportam cadeias de formato, veja Format Strings and .NET Class Library Types (Cadeias de Formato e Tipos de Bibliotecas de Classe .NET) no artigo Formatting Types in .NET (Tipos de Formatação em .NET).
Tente modificar as cadeias de caracteres de formato no exemplo para ver como elas afetam a formatação da data e hora e o valor numérico. Altere o "d" em {date:d}
para "t" (para apresentar o formato de hora curta), "y" (para apresentar o ano e o mês) e “yyyy” (para apresentar o ano como um número de quatro dígitos). Altere "C2" em {price:C2}
para "e" (para notação exponencial) e "F3" (para um valor numérico com três dígitos a seguir à casa decimal).
Além de controlar a formatação, você também pode controlar a largura do campo e o alinhamento das cadeias de caracteres formatadas incluídas na cadeia de caracteres de resultado. No próximo passo, vai aprender a fazer isso.
Controlar a largura do campo e o alinhamento das expressões de interpolação
Normalmente, quando o resultado de uma expressão de cadeia de caracteres interpolada é formatado para string, essa string é incluída em uma string de resultado sem espaços à esquerda ou à direita. Particularmente quando você trabalha com um conjunto de dados, ser capaz de controlar a largura de um campo e o alinhamento do texto ajuda a produzir uma saída mais legível. Para ver isso, execute o seguinte código:
var inventory = new Dictionary<string, int>()
{
["hammer, ball pein"] = 18,
["hammer, cross pein"] = 5,
["screwdriver, Phillips #2"] = 14
};
Console.WriteLine($"Inventory on {DateTime.Now:d}");
Console.WriteLine(" ");
Console.WriteLine($"|{"Item",-25}|{"Quantity",10}|");
foreach (var item in inventory)
Console.WriteLine($"|{item.Key,-25}|{item.Value,10}|");
Os nomes dos itens estão alinhados à esquerda e as quantidades à direita. Você especifica o alinhamento adicionando uma vírgula (",") após uma expressão de interpolação e designando a largura mínima do campo. Se o valor especificado for um número positivo, o campo estará alinhado à direita. Se for um número negativo, o campo está alinhado à esquerda.
Tente remover os sinais negativos do {"Item",-25}
código e {item.Key,-25}
e execute o exemplo novamente. Desta vez, os nomes dos itens estão alinhados à direita.
Você pode combinar um especificador de alinhamento e uma cadeia de caracteres de formato para uma única expressão de interpolação. Para fazer isso, especifique o alinhamento primeiro, seguido por dois pontos e a cadeia de caracteres de formato. Experimente o código a seguir que exibe três cadeias de caracteres formatadas com larguras de campo definidas:
Console.WriteLine($"[{DateTime.Now,-20:d}] Hour [{DateTime.Now,-10:HH}] [{1063.342,15:N2}] feet");
Parabéns!
Você concluiu o tutorial interativo de interpolação de cadeia de caracteres. Você pode visitar o site do .NET para baixar o SDK do .NET Core, criar um projeto em sua máquina e continuar codificando.
Para obter mais informações, consulte Interpolação de cadeia de caracteres.
Está com problemas nesta secção? Se sim, envie-nos o seu feedback para que possamos melhorar esta secção.