Pular para o conteúdo principal

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.

Postagens mais visitadas deste blog

Como gerar scripts para exportar dados no SQL Server 2008

Uma das tarefas mais comuns no trabalho com desenvolvimento de software que consome dados em bancos como o SQL Server 2008 é a necessidade de em algum momento precisarmos exportar os dados de um banco para outro. Quer seja para realizar testes ou fazer simulações existem várias maneiras de se fazer isto. Neste post eu quero demonstrar um recurso do SQL Server Management Studio (SSMS) que permite realizar esta tarefa rapidamente.Para os que estão acostumados a usar esta ferramenta, já devem saber que é possível gerar scripts para o schema e também transferir os dados entre dois bancos distintos. Isto pode ser feito se o SSMS puder conectar-se com as duas bases, de origem e destino. No exemplo que vou dar, o objetivo é gerar o script apenas para uma tabela do banco de dados de exemplo da Microsoft – Northwind.1. Iniciando o assistenteO assistente deve ser iniciado clicando com o botão direito do mouse sobre o banco onde se encontra a tabela a qual iremos gerar o script. Deve se clicar n…

Pivot dinâmico com SQL Server

Passo a passo para usar pivoteamento dinâmicoOs bancos de dados bem configurados e definidos armazenam os dados de forma a otimizar o acesso, evitando duplicidade e garantindo a integridade. Porém, em muitas situações isto pode dificultar a apresentação de forma adequada sendo necessário preparar os dados usando vários recursos entre os quais, fazer o pivoteamento.Se você não precisou ainda usar ou não sabe o que é consiste em transformar cada linha de uma determinada coluna em colunas de uma nova consulta.Assim, considere uma tabela que armazene as notas bimestrais de um boletim. Uma possível estrutura para esta tabela seria algo assim:ColunaTipo de dado/TamanhoDisciplinanvarchar(50)BimestreIntNotanumeric(5,2)Uma consulta select nesta tabela com alguns dados traria um resultado parecido com o abaixo:Porém pode ser que para apresentar estes dados em um relatório seja necessário transformar cada bimestre em uma coluna e agrupar as notas nestas colunas para que fique dessa forma:Isto po…

Desabilitando o auto commit no SSMS (SQL Server Management Studio)

(Ou, como prevenir desastres e manter o emprego a salvo…)Neste post vai uma pequena mas tremendamente útil dica para desabilitar o auto commit da aplicação SQL Server Management Studio (SSMS) que é usada por dez entre dez usuários do banco de dados SQL Server para fazer consultas, alterações e executar scripts no banco de dados. (Preferências à parte, realmente muita gente usa),A primeira e mais importante notícia é que, diferentemente da ferramenta do Oracle, este editor de scripts do SQL Server vem com o recurso de auto commit ativado por padrão, assim, qualquer instrução DML (alteração dos dados com update, insert e delete) ou DDL (alteração no banco como create, drop, alter, etc.) será imediatamente enviada ao banco e persistida.Isto pode ser altamente crítico pois se estiver executando as instruções em um banco de dados de produção não haverá muitas formas de desfazer se é que haverá.Inicialmente, pode se evitar muitos acidades executando estas instruções dentro de um bloco BEGIN…