Exercício - Investigar noções básicas de formatação de cadeia de caracteres

Concluído

Nesta unidade, você aprende métodos para formatar cadeias de caracteres para exibição eficiente, especialmente para casos que usam várias variáveis.

Prepare seu ambiente de codificação

Este módulo inclui atividades práticas que o guiam através do processo de criação e execução de código de demonstração. Você é incentivado a concluir essas atividades usando o Visual Studio Code como seu ambiente de desenvolvimento. Usar o Visual Studio Code para essas atividades ajuda você a se sentir mais confortável escrevendo e executando código em um ambiente de desenvolvedor usado por profissionais em todo o mundo.

Nota

Se você concluiu outros módulos do Microsoft Learn nesta série C#, talvez já tenha criado uma pasta de projeto para exemplos de código. Se esse for o caso, você pode ignorar a seção a seguir das etapas e excluir o código no Project.cs arquivo usado para um exercício anterior.

  1. Abra o Visual Studio Code. Você pode usar o menu Iniciar do Windows (ou recurso equivalente para outro sistema operacional) para abrir o Visual Studio Code.

  2. No menu Arquivo de código do Visual Studio, selecione Abrir pasta.

  3. Na caixa de diálogo Abrir pasta, navegue até a pasta Área de trabalho do Windows. Se você tiver um local de pasta diferente onde você mantém projetos de código, você pode usar esse local de pasta em vez disso. Para este treinamento, o importante é ter um local que seja fácil de localizar e lembrar.

  4. Na caixa de diálogo Abrir pasta, selecione Selecionar pasta. Se vir uma caixa de diálogo de segurança a perguntar se confia nos autores, selecione Sim.

  5. No menu Terminal de código do Visual Studio, selecione Novo terminal. Observe que um prompt de comando no painel Terminal exibe o caminho da pasta atual. Por exemplo:

    C:\Users\someuser\Desktop>
    
  6. No prompt de comando do Terminal, para criar um novo aplicativo de console em uma pasta especificada, digite dotnet new console -o ./CsharpProjects/TestProject e pressione Enter. Este comando .NET CLI usa um modelo de programa .NET para criar um novo projeto de aplicativo de console C# no local da pasta especificada. O comando cria as pastas CsharpProjects e TestProject para você e usa TestProject como o nome do .csproj arquivo.

  7. No painel EXPLORER, expanda a pasta CsharpProjects . Você deve ver a pasta TestProject e dois arquivos, um arquivo de programa C# chamado Program.cs e um arquivo de projeto C# chamado TestProject.csproj.

  8. No painel EXPLORER, para visualizar seu arquivo de código no painel Editor, selecione Program.cs.

  9. Exclua as linhas de código existentes. Você usa este projeto de console C# para criar, compilar e executar exemplos de código durante este módulo.

  10. Feche o painel Terminal.

O que é a Formatação Composta?

A formatação composta utiliza marcadores de posição numerados dentro de uma cadeia de carateres. Em tempo de execução, tudo dentro das chaves é resolvido para um valor que também é passado com base na sua posição.

Este exemplo de formatação composta usa um método Format() interno na palavra-chave do string tipo de dados. Atualize seu código no Editor de Códigos do Visual Studio da seguinte maneira:

string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);

Se você executar esse código, você observar a seguinte saída.

Hello World!

Existem algumas coisas importantes a ter em conta sobre este código.

  • Os tipos de dados e as variáveis de um determinado tipo de dados têm “métodos auxiliares” incorporados para tornar certas tarefas fáceis.
  • A cadeia de caracteres "{0} {1}!" literal forma um modelo, partes do qual são substituídas em tempo de execução.
  • O token {0} é substituído pelo primeiro argumento após o modelo da cadeia, por outras palavras, o valor da variável first.
  • O token {1} é substituído pelo segundo argumento após o modelo da cadeia, por outras palavras, o valor da variável second.

Nota

Você pode achar estranho começar com o número 0. Na realidade, é muito comum no desenvolvimento de software. Sempre que ocorrer uma sequência de itens que pode ser identificada com um número, a numeração normalmente começará por 0.

  1. Atualize o seu código da seguinte forma:

    string first = "Hello";
    string second = "World";
    Console.WriteLine("{1} {0}!", first, second);
    Console.WriteLine("{0} {0} {0}!", first, second);
    
  2. Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código. Deverá ver o seguinte resultado:

    World Hello!
    Hello Hello Hello!
    

Algumas observações sobre estes exemplos:

  • Para a primeira Console.WriteLine() declaração, observe que os tokens podem ser organizados em qualquer ordem. O código de exemplo tem {1} antes {0}de .
  • Para a segunda Console.WriteLine() instrução, observe que os tokens podem ser reutilizados com três instâncias de {0}. Além disso, o segundo argumento da variável, second, não é usado. No entanto, o código ainda é executado sem erros.

O que é a interpolação de cadeias de carateres?

A interpolação de cadeias de caracteres é uma técnica que simplifica a formatação composta.

Em vez de utilizar um token numerado e incluir o valor literal ou o nome da variável numa lista de argumentos de String.Format() ou Console.WriteLine(), pode utilizar apenas o nome da variável dentro de chavetas.

  1. Para que uma cadeia de carateres seja interpolada, deve aplicar a diretiva $ como prefixo. Agora, crie os mesmos exemplos anteriores usando interpolação de cadeia de caracteres em vez de formatação composta. Atualize o seu código da seguinte forma:

    string first = "Hello";
    string second = "World";
    Console.WriteLine($"{first} {second}!");
    Console.WriteLine($"{second} {first}!");
    Console.WriteLine($"{first} {first} {first}!");
    
  2. Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código. Deverá ver o seguinte resultado:

    Hello World!
    World Hello!
    Hello Hello Hello!
    

Nota

Se você olhar para exemplos de código em livros e online, é provável que veja a formatação composta e a interpolação de cadeia de caracteres usadas, mas geralmente você deve escolher a interpolação de cadeia de caracteres.

Formatar a moeda

A formatação composta e a interpolação de cadeias podem ser utilizadas para formatar valores para apresentação de acordo com um idioma e uma cultura específicos. No exemplo a seguir, o especificador de formato de moeda :C é utilizado para apresentar as variáveis price e discount como moeda. Atualize o seu código da seguinte forma:

decimal price = 123.45m;
int discount = 50;
Console.WriteLine($"Price: {price:C} (Save {discount:C})");

Se você executou esse código em um computador que tem seu idioma de exibição do Windows definido como "Inglês (Estados Unidos)", você observa a seguinte saída.

Price: $123.45 (Save $50.00)

Observe como a adição de :C aos tokens dentro das chavetas formata o número como moeda, independentemente da utilização de int ou decimal.

Nota

O que acontece se o seu país/região e idioma não forem conhecidos? Se você executar o código anterior no Editor .NET "no navegador", como no TrydotNet , você verá a seguinte saída: Price: ¤123.45 (Save ¤50.00). O símbolo ¤ é utilizado em vez do símbolo do dinheiro do seu país/região. Este é um símbolo genérico utilizado para representar a “moeda”, independentemente do tipo de moeda. Verá este símbolo no Editor .NET, dado que ele ignora a sua localização atual.

Como o país/região e o idioma do usuário afetam a formatação da cadeia de caracteres

E se você executar o código anterior em um computador na França que tenha seu idioma de exibição do Windows definido como francês? Nesse caso, verá o seguinte resultado.

Price: 123,45 € (Save 50,00 €)

A razão para a saída "€" anterior é que o recurso de formatação de moeda de cadeia de caracteres depende da configuração do computador local para cultura. Neste contexto, o termo "cultura" refere-se ao país/região e língua do utilizador final. O código de cultura é uma cadeia de cinco caracteres que os computadores usam para identificar o local e o idioma do usuário final. O código de cultura garante que certas informações, como datas e moeda, possam ser apresentadas corretamente.

Por exemplo:

  • o código de cultura de um falante de inglês nos EUA é en-US.
  • o código de cultura de um falante de francês em França é fr-FR.
  • o código de cultura de um falante de francês no Canadá é fr-CA.

A cultura afeta o sistema de escrita, o calendário utilizado, a ordem de ordenação das cadeias de carateres e a formatação das datas e dos números (por exemplo, a formatação da moeda).

Infelizmente, garantir que seu código funcione corretamente em todos os computadores, independentemente do país/região ou do idioma do usuário final, é um desafio. Este processo é conhecido como localização (ou globalização). A localização depende de muitos fatores não discutidos neste módulo, mas simplesmente, a sintaxe de formatação de cadeia de caracteres pode usar um formato diferente, dependendo da cultura do usuário.

Formatar os números

Ao trabalhar com dados numéricos, convém formatar o número para legibilidade incluindo vírgulas para delinear milhares, milhões, bilhões e assim por diante.

O N especificador de formato numérico torna os números mais legíveis. Atualize o seu código da seguinte forma:

decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N} units");

Se você estiver visualizando isso a en-US partir da cultura, você observa a seguinte saída.

Measurement: 123,456.79 units

Por predefinição, o especificador de formato numérico N apresenta apenas dois dígitos após o ponto decimal.

Se quiser apresentar uma precisão superior, poderá fazê-lo ao adicionar um número após o especificador. O código seguinte vai apresentar quatro dígitos após o ponto decimal com o especificador N4. Atualize o seu código da seguinte forma:

decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N4} units");

Se você estiver visualizando isso a en-US partir da cultura, você observa a seguinte saída.

Measurement: 123,456.7891 units

Formatar as percentagens

Utilize o especificador de formato P para formatar as percentagens. Adicione um número posteriormente para controlar o número de valores apresentados após o ponto decimal. Atualize o seu código da seguinte forma:

decimal tax = .36785m;
Console.WriteLine($"Tax rate: {tax:P2}");

Se você estiver visualizando isso a en-US partir da cultura, você observa a seguinte saída.

Tax rate: 36.79 %

Combinando abordagens de formatação

As variáveis de cadeia de caracteres podem armazenar cadeias de caracteres criadas usando técnicas de formatação. No exemplo a seguir, decimais e resultados matemáticos decimais são formatados e armazenados na cadeia de caracteres usando formatação yourDiscount composta.

Atualize o seu código da seguinte forma.

decimal price = 67.55m;
decimal salePrice = 59.99m;

string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);

Console.WriteLine(yourDiscount);

Se você estiver visualizando isso a en-US partir da cultura, você observa a seguinte saída.

You saved $7.56 off the regular $67.55 price. 

Você pode combinar várias cadeias de caracteres formatadas. Construa com base no código anterior concatenando a porcentagem calculada usando a interpolação de cadeia de caracteres em vez de concatenação de cadeia de caracteres inserindo yourDiscount += $"A discount of {(price - salePrice)/price:P2}!"; no código na linha antes de Console.WriteLine().

Nota

Você não precisa usar String.Format() essa abordagem de interpolação de cadeia de caracteres.

Atualize o seu código da seguinte forma.

decimal price = 67.55m;
decimal salePrice = 59.99m;

string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);

yourDiscount += $"A discount of {((price - salePrice)/price):P2}!"; //inserted
Console.WriteLine(yourDiscount);

Se você estiver visualizando esta unidade da en-US cultura, observará a saída a seguir.

You saved $7.56 off the regular $67.55 price. A discount of 11.19%!

Recapitulação

Estas são as conclusões mais importantes a retirar desta unidade sobre a formatação da cadeia de carateres:

  • Pode utilizar a formatação composta ou a interpolação de cadeias para formatar as cadeias.
  • Com a formatação composta, vai utilizar uma cadeia de carateres que contém um ou mais tokens de substituição sob a forma {0}. Também vai fornecer uma lista de argumentos que têm correspondência com os tokens de substituição com base na ordem dos mesmos. A formatação composta funciona ao utilizar string.Format() ou Console.WriteLine().
  • Com a interpolação de cadeias, utiliza um modelo de cadeia de carateres que contém os nomes das variáveis que deseja substituir entre chavetas. Vai utilizar a diretiva $ antes do modelo de cadeia de carateres para indicar que deseja que a cadeia seja interpolada.
  • Formate a moeda com um especificador :C.
  • Formate os números com um especificador :N. Controle a precisão (o número de valores após o ponto decimal) com um número após :N como {myNumber:N3}.
  • Formate porcentagens usando o especificador de :P formato.
  • A formatação de moeda e números depende da cultura do usuário final, um código de cinco caracteres que inclui o país/região e o idioma do usuário (de acordo com as configurações do computador).

Verifique o seu conhecimento

1.

Qual é a saída de Console.WriteLine($"Tax rate: {tax:P1}");, onde tax é definido por decimal tax =.12051 m;?