Examinar uma solução para a interpolação de cadeias de caracteres

Concluído

O código a seguir é uma solução possível para o desafio da unidade anterior.

string customerName = "Ms. Barros";

string currentProduct = "Magic Yield";
int currentShares = 2975000;
decimal currentReturn = 0.1275m;
decimal currentProfit = 55000000.0m;

string newProduct = "Glorious Future";
decimal newReturn = 0.13125m;
decimal newProfit = 63000000.0m;

Console.WriteLine($"Dear {customerName},");
Console.WriteLine($"As a customer of our {currentProduct} offering we are excited to tell you about a new financial product that would dramatically increase your return.\n");
Console.WriteLine($"Currently, you own {currentShares:N} shares at a return of {currentReturn:P}.\n");
Console.WriteLine($"Our new product, {newProduct} offers a return of {newReturn:P}.  Given your current volume, your potential profit would be {newProfit:C}.\n");

Console.WriteLine("Here's a quick comparison:\n");

string comparisonMessage = "";

comparisonMessage = currentProduct.PadRight(20);
comparisonMessage += String.Format("{0:P}", currentReturn).PadRight(10);
comparisonMessage += String.Format("{0:C}", currentProfit).PadRight(20);

comparisonMessage += "\n";
comparisonMessage += newProduct.PadRight(20);
comparisonMessage += String.Format("{0:P}", newReturn).PadRight(10);
comparisonMessage += String.Format("{0:C}", newProfit).PadRight(20);

Console.WriteLine(comparisonMessage);

O código é simplesmente "uma solução possível" porque muito depende de como você decidiu implementar a lógica. Contanto que você tenha usado as técnicas que abordamos neste módulo para formatar cadeias de caracteres, preencher cadeias de caracteres e assim por diante e a saída corresponde à saída proposta, você está de parabéns!

Dear Ms. Barros,
As a customer of our Magic Yield offering we are excited to tell you about a new financial product that would dramatically increase your return.

Currently, you own 2,975,000.00 shares at a return of 12.75%.

Our new product, Glorious Future offers a return of 13.13%.  Given your current volume, your potential profit would be $63,000,000.00.

Here's a quick comparison:

Magic Yield         12.75%   $55,000,000.00      
Glorious Future     13.13%   $63,000,000.00  

Parabéns pelo resultado positivo!

Detalhes da solução

Você pode continuar esta seção para obter uma explicação sobre como a solução proposta resolve esse desafio.

  1. Reserve um minuto para analisar o código da solução.

    Você pode começar a dividir a solução e resolver primeiro a impressão da saudação e do parágrafo inicial no terminal. O código a seguir resolve a exibição da saudação Dear Ms. Barros, usando a interpolação de cadeia de caracteres. Agora você deve estar familiarizado com o padrão Console.WriteLine($"Your text {yourVariable}");:

    string customerName = "Ms. Barros";
    Console.WriteLine($"Dear {customerName},");
    

    A saída do código é:

    Dear Ms. Barros,   
    

    Examine a solução completa de exemplo novamente. A primeira metade da solução usa a interpolação de cadeia de caracteres para exibir cada parte do primeiro parágrafo.

    Observação

    A formatação composta, como Console.WriteLine("Dear {0},", customerName), é outra solução possível.

  2. A segunda parte da solução exibe a tabela de comparação criando uma cadeia de caracteres longa passo a passo usando concatenação de cadeia de caracteres, string.Format() com formatação composta, especificadores de formato (porcentagem e moeda) e PadRight().

    O código a seguir cria a primeira linha da tabela com adições de Console.WriteLine() após cada etapa da criação da cadeia de caracteres comparisonMessage.

    string currentProduct = "Magic Yield";
    int currentShares = 2975000;
    decimal currentReturn = 0.1275m;
    decimal currentProfit = 55000000.0m;
    string comparisonMessage = "";
    
    comparisonMessage = currentProduct.PadRight(20);
    Console.WriteLine(comparisonMessage);
    
    comparisonMessage += String.Format("{0:P}", currentReturn).PadRight(10);
    Console.WriteLine(comparisonMessage);
    
    comparisonMessage += String.Format("{0:C}", currentProfit).PadRight(20);
    Console.WriteLine(comparisonMessage);
    

    A saída de exemplo a seguir mostra como a primeira linha da tabela de comparação é criada em três etapas.

    Magic Yield
    Magic Yield         12.75%
    Magic Yield         12.75%    $55,000,000.00
    

Se você teve dificuldades para concluir o desafio, talvez seja melhor revisar as unidades anteriores antes de continuar.