Exercício – Descobrir o preenchimento e alinhamento

Concluído

O método string.Format() é usado para executar a formatação composta, como no exemplo:

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

Pode ter parecido um pouco estranho que uma palavra-chave que representa um tipo de dados tenha métodos que você pode chamar da mesma maneira como você faz na classe Console. O fato é que há muitos métodos semelhantes no tipo de dados string e qualquer cadeia de caracteres literal ou variável do tipo string.

Veja uma breve lista de categorias desses métodos internos para você poder ter uma ideia do que é possível.

  • Métodos que adicionam espaços em branco para fins de formatação (PadLeft(), PadRight())
  • Métodos que comparam duas cadeias de caracteres ou facilitam a comparação (Trim(), TrimStart(), TrimEnd(), GetHashcode(), a propriedade Length)
  • Métodos que ajudam a determinar o que há dentro de uma cadeia de caracteres ou até mesmo recuperar apenas uma parte da cadeia de caracteres (Contains(), StartsWith(), EndsWith(), Substring())
  • Métodos que alteram o conteúdo da cadeia de caracteres substituindo, inserindo ou removendo partes (Replace(), Insert(), Remove())
  • Métodos que transformam uma cadeia de caracteres em uma matriz de cadeias de caracteres ou de caracteres (Split(), ToCharArray())

Formatar cadeias de caracteres adicionando um espaço em branco antes ou depois

O método PadLeft() adiciona espaços em branco ao lado esquerdo da cadeia de caracteres para que o número total de caracteres seja igual ao argumento enviado por você. Nesse caso, é interessante que o comprimento total da cadeia de caracteres seja 12 caracteres.

  1. Exclua ou use o operador de comentário de linha // para comentar todo o código dos exercícios anteriores.

  2. Atualize seu código no Editor do Visual Studio Code da seguinte maneira:

     string input = "Pad this";
     Console.WriteLine(input.PadLeft(12));
    
  3. No menu Arquivo do Visual Studio Code, selecione Salvar. Salve o arquivo Program.cs antes de compilar ou executar o código.

  4. No painel EXPLORER, para abrir o Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado. Um painel Terminal deve ser aberto e incluir um prompt de comando mostrando que o Terminal está aberto no local da pasta TestProject.

  5. No prompt de comando do Terminal, para executar o código, digite dotnet run e pressione Enter.

    Observação

    Se você vir uma mensagem com a mensagem "Não foi possível encontrar um projeto a ser executado", verifique se o prompt de comando Terminal exibe o local esperado da pasta TestProject. Por exemplo: C:\Users\someuser\Desktop\csharpprojects\TestProject>

    Ao executar o código, você observa quatro caracteres prefixados à esquerda da cadeia de caracteres que levam o comprimento a 12 caracteres.

     	Pad this
    
  6. Para adicionar espaço ou caracteres ao lado direito da cadeia de caracteres, use o método PadRight(). 1. Atualize seu código no Editor do Visual Studio Code da seguinte maneira:

     Console.WriteLine(input.PadRight(12));
    
  7. Salve o arquivo de código e use o Visual Studio Code para executar o código. Você não verá nenhum caractere adicionado ao final da cadeia de caracteres, mas eles estarão lá.

O que é um método sobrecarregado?

No C#, um método sobrecarregado é outra versão de um método com argumentos diferentes ou extras que modificam a funcionalidade do método ligeiramente, como é o caso com a versão sobrecarregada do método PadLeft().

Você também pode chamar uma segunda versão sobrecarregada do método e passar qualquer caractere que você queira usar em vez de um espaço. Nesse caso, você preenche o espaço extra com o caractere de traço.

  1. Exclua ou use o operador de comentário de linha // para comentar todo o código da etapa anterior.

  2. Atualize seu código no Editor do Visual Studio Code da seguinte maneira:

     Console.WriteLine(input.PadLeft(12, '-'));
     Console.WriteLine(input.PadRight(12, '-'));
    
  3. Salve o arquivo de código e use o Visual Studio Code para executar o código. Você deverá ver quatro traços prefixando a esquerda da cadeia de caracteres que tem 12 caracteres.

     ----Pad this
     Pad this----
    

Agora vamos aplicar esse conhecimento recém-adquirido a outro cenário do mundo real.

Como trabalhar com cadeias de caracteres preenchidas

Vamos supor que você trabalha para uma empresa de processamento de pagamentos que ainda dá suporte a sistemas de mainframe herdados. Geralmente, esses sistemas exigem que os dados sejam inseridos em colunas específicas. Por exemplo, armazene a ID do pagamento nas colunas 1 a 6, o nome do favorecido nas colunas 7 a 30 e o valor do pagamento nas colunas 31 a 40. Além disso, é importante que o Valor do Pagamento esteja alinhado à direita.

Foi solicitado que você compilasse um aplicativo que converterá dados do RDBMS no formato de arquivo herdado. Para que a integração funcione corretamente, a primeira etapa é confirmar o formato de arquivo fornecendo aos mantenedores do sistema herdado um exemplo da saída. Posteriormente, você vai criar esse trabalho para enviar centenas ou milhares de pagamentos a serem processados por meio de um arquivo de texto ASCII.

Adicionar a ID de Pagamento à saída

Para começar, imprima a ID do Pagamento nas primeiras seis colunas. Você escolherá alguns dados de pagamento aleatórios que devem ser adequados aos fins.

  1. Exclua ou use o operador de comentário de linha // para comentar todo o código da etapa anterior.

  2. Atualize seu código no Editor do Visual Studio Code da seguinte maneira:

     string paymentId = "769C";
    
     var formattedLine = paymentId.PadRight(6);
    
     Console.WriteLine(formattedLine);
    

    Reutilize a variável formattedLine para criar a cadeia de caracteres de saída.

  3. Salve o arquivo de código e use o Visual Studio Code para executar o código. A seguinte saída deve ser exibida:

     769C	
    

Existem dois espaços em branco à direita que não são visíveis. Você confirmará que eles existem na próxima etapa.

Adicionar o nome do favorecido à saída

Em seguida, você adicionará um Nome de Favorecido fictício, preenchendo-o adequadamente.

  1. Atualize seu código no Editor do Visual Studio Code da seguinte maneira:

     string paymentId = "769C";
     string payeeName = "Mr. Stephen Ortega";
    
     var formattedLine = paymentId.PadRight(6);
     formattedLine += payeeName.PadRight(24);
    
     Console.WriteLine(formattedLine);
    

    O operador += executa uma concatenação de cadeias de caracteres, usando o valor anterior da variável formattedLine e adicionando o novo a ele. É um equivalente abreviado do seguinte exemplo de código:

     formattedLine = formattedLine + payeeName.PadRight(24);
    
  2. Salve o arquivo de código e use o Visual Studio Code para executar o código. A seguinte saída deve ser exibida:

     769C  Mr. Stephen Ortega
    

Novamente, há alguns espaços em branco depois do Nome do Favorecido. Além disso, existem dois espaços em branco após a ID de Pagamento da Etapa 1.

Adicionar o valor do pagamento à saída

Em seguida, adicione um Valor do Pagamento e usar PadLeft() para alinhar a saída à direita.

  1. Atualize seu código no Editor do Visual Studio Code da seguinte maneira:

     string paymentId = "769C";
     string payeeName = "Mr. Stephen Ortega";
     string paymentAmount = "$5,000.00";
    
     var formattedLine = paymentId.PadRight(6);
     formattedLine += payeeName.PadRight(24);
     formattedLine += paymentAmount.PadLeft(10);
    
     Console.WriteLine(formattedLine);
    
  2. Salve o arquivo de código e use o Visual Studio Code para executar o código. A seguinte saída deve ser exibida:

     769C  Mr. Stephen Ortega       $5,000.00
    

Essa saída é bem próxima daquilo que você entendeu que os mantenedores de sistemas herdados estavam procurando.

Adicionar uma linha de números acima da saída para confirmar mais facilmente o resultado

Como é difícil contar as colunas exatas em que cada elemento de dados é exibido, você adiciona uma linha diretamente acima da saída que ajuda você a contar as colunas.

Console.WriteLine("1234567890123456789012345678901234567890");
  1. Atualize seu código no Editor do Visual Studio Code da seguinte maneira:

     string paymentId = "769C";
     string payeeName = "Mr. Stephen Ortega";
     string paymentAmount = "$5,000.00";
    
     var formattedLine = paymentId.PadRight(6);
     formattedLine += payeeName.PadRight(24);
     formattedLine += paymentAmount.PadLeft(10);
    
     Console.WriteLine("1234567890123456789012345678901234567890");
     Console.WriteLine(formattedLine);
    
  2. Salve o arquivo de código e use o Visual Studio Code para executar o código. Você deve ver a seguinte saída, que pode enviar para os mantenedores do sistema herdado para confirmar se a nova integração funciona corretamente:

     1234567890123456789012345678901234567890
     769C  Mr. Stephen Ortega       $5,000.00
    

Sucesso!

Recapitulação

Veja algumas informações importantes desta unidade.

  • O tipo de dados string, cadeias de caracteres literais e variáveis do tipo String implementam muitos métodos auxiliares para formatar, modificar e executar outras operações nas cadeias de caracteres.
  • Os métodos PadLeft() e PadRight() adicionam espaço em branco (ou, opcionalmente, outro caractere) ao comprimento total de uma cadeia de caracteres.
  • Use PadLeft() para alinhar uma cadeia de caracteres à direita.
  • Alguns métodos são sobrecarregados, o que significa que eles têm várias versões do método com diferentes argumentos que afetam sua funcionalidade.
  • O operador += concatena uma nova cadeia de caracteres à direita para a cadeia de caracteres existente à esquerda.

Verificar seu conhecimento

1.

Considerando string myWords = "Learning C#", qual é a melhor descrição de saída para Console.WriteLine(myWords.PadLeft(12));?