Exercício – Descobrir o preenchimento e alinhamento
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 propriedadeLength
) - 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.
Exclua ou use o operador de comentário de linha
//
para comentar todo o código dos exercícios anteriores.Atualize seu código no Editor do Visual Studio Code da seguinte maneira:
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));
No menu Arquivo do Visual Studio Code, selecione Salvar. Salve o arquivo Program.cs antes de compilar ou executar o código.
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.
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
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));
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.
Exclua ou use o operador de comentário de linha
//
para comentar todo o código da etapa anterior.Atualize seu código no Editor do Visual Studio Code da seguinte maneira:
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));
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.
Exclua ou use o operador de comentário de linha
//
para comentar todo o código da etapa anterior.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.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.
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ávelformattedLine
e adicionando o novo a ele. É um equivalente abreviado do seguinte exemplo de código:formattedLine = formattedLine + payeeName.PadRight(24);
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.
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);
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");
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);
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()
ePadRight()
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.