String.Format e seus segredos

Olá… de volta a ativa um um artigo que se não é novidade, vai ajudar aqueles programadores que estão brigando com o método String.Format ou com formatações dentro do método “ToString()”.

Você deve ter percebido que Console.WriteLine na verdade é um método “parente” do String.Format pois permite que façamos formatações como neste último.

Existem alguns truques dentro destes que não são muito usados ou tão comuns. Observe o código a seguir:

    9   void Main()

   10   {

   11     List<meusDados> dados = new List<meusDados>();

   12     dados.Add(new meusDados

   13     {

   14       ID = 1,

   15       Nome = "José",

   16       Cargo = "Gerente",

   17       Admissao = new DateTime(1990, 1, 2),

   18       Salario = 3000M

   19     });

   20     dados.Add(new meusDados

   21     {

   22       ID = 10,

   23       Nome = "Ana",

   24       Cargo = "Programadora",

   25       Admissao = new DateTime(2000, 10, 12),

   26       Salario = 2773.35M

   27     });

   28     dados.Add(new meusDados

   29     {

   30       ID = 12,

   31       Nome = "Beatriz",

   32       Cargo = "Suporte",

   33       Admissao = new DateTime(2005, 11, 2),

   34       Salario = 1500

   35     });

   36 

   37     string formatacao = "{0, 5} {1, -15} {2, -15} {3, -10} {4, 15}";

   38     Console.WriteLine(formatacao, "Id", "Nome", "Cargo", "Admissão", "Salário");

   39     foreach (meusDados item in dados)

   40     {

   41       Console.WriteLine(formatacao, item.ID, item.Nome, item.Cargo, item.Admissao, item.Salario);

   42     }

   43   }

   44 

   45   // Define other methods and classes here

   46   public class meusDados

   47   {

   48     public int ID;

   49     public string Nome;

   50     public string Cargo;

   51     public DateTime Admissao;

   52     public decimal Salario;

   53   }

Este código produz a seguinte saída na tela:

   Id Nome            Cargo           Admissão           Salário
    1 José            Gerente         02/01/1990 00:00:00            3000
   10 Ana             Programadora    12/10/2000 00:00:00         2773,35
   12 Beatriz         Suporte         02/11/2005 00:00:00            1500

O ponto importante aqui está na linha 37 que define a formatação a ser usada:

   37     string formatacao = "{0, 5} {1, -15} {2, -15} {3, -10} {4, 15}";

Ao separar o número do parâmetro esperado pelo método com uma vírgula o seu conteúdo é alinhado com espaços correspondente ao número que está após a vírgula.

Números positivos alinham o conteúdo a direita, numeros negativos à esquerda.

Mas, é possível definir mais opções de formatos, altere a linha para o conteúdo a seguir:

   37     string formatacao = "{0, 5} {1, -15} {2, -15} {3, -10:dd/MM/yyyy} {4, 15:C}";

Note que agora, além do tamanho do alinhamento é passado também uma opção a mais de formatação. Este código resulta na seguinte listagem:

   Id Nome            Cargo           Admissão           Salário
    1 José            Gerente         02/01/1990     R$ 3.000,00
   10 Ana             Programadora    12/10/2000     R$ 2.773,35
   12 Beatriz         Suporte         02/11/2005     R$ 1.500,00

Com isso, saídas de texto em arquivos ou mesmo na tela tem mais opções de formatação. Por enquanto é só. Explore mais sobre formatação de strings na documentação do framework.