Dev (Back & Front)ARTIGO

Formatando vários tipos de string

Olá, Internautas!

Gostaria de mostrar hoje uma nova forma de formatar string utilizando o C#.NET e alguns tipos definidos para formatação. Em um artigo anterior ( Formatando
String rapidamente
) fui questionado sobre a não utilização de expressões regulares. 

Requisitos:

  • Linguagem C#.NET
  • Framework 1.1, 2.0, 3.5 e 4.0
  • Ferramenta utilizada: Visual Studio .NET 2008

No artigo em questão, Formatando
String rapidamente
, fizemos, como o título diz, uma formatação rápida para quem não entende muito de expressão regular.

Não estou desconsiderando a expressão regular, muito pelo contrário; quero mesmo é ajudar, sem a utilização de expressão regular, a resolver o seu problema o mais rápido possível.

Como organizei melhor um outro código para formatar String utilizando algumas funções específicas, resolvi publicar para servir de base a todos que precisam. O código abaixo foi feito para formatar Text, Numeric, CNPJ, CPF, Date, Int, CEP, Telephone e Currency.

Coloquei esses tipos, pois são os mais usados por mim em meus sistemas. Esse método ainda não aborda expressão regular, aborda mais string.Format e Convert, mas acredito que pode ajudar muito a você, leitor.

O primeiro passo foi criar Enum com os tipos chamada TypeString.

public enum TypeString

 {<br /><br />Text,<br /><br />Numeric,<br /><br />CNPJ,<br /><br />CPF,<br /><br />Date,<br /><br />Int,<br /><br />CEP,<br /><br />Telephone,<br /><br />Currency<br /><br />}

Code 1.1

Ainda no mesmo arquivo, criei outro método específico chamado FormatString, recebendo dois tipos de valores, primeiro o valor (string) e o segundo o type (TypeString) que, resumidamente são os tipos criados no Enum. Dentro do método, utilizei o switch para verificar o tipo e formatar:

 public static string FormatString(string Value, TypeString tType)<br /><br />{<br /><br />try<br /><br />{<br /><br />switch (tType)<br /><br />{<br /><br />case TypeString.CNPJ:<br /><br />return string.Format("{0}.{1}.{2}/{3}-{4}", Value.Substring(0, 2), Value.Substring(2, 3), Value.Substring(5, 3), Value.Substring(8, 4), Value.Substring(12, 2));<br /><br />case TypeString.CPF:<br /><br />return string.Format("{0}.{1}.{2}-{3}", Value.Substring(0, 3), Value.Substring(3, 3), Value.Substring(6, 3), Value.Substring(9, 2));<br /><br />case TypeString.Date:<br /><br />if (Convert.ToDateTime(Value) == Convert.ToDateTime("1/1/1900"))<br /><br />return string.Empty;<br /><br />else<br /><br />return Convert.ToDateTime(Value).ToString("dd/MM/yyyy");<br /><br />case TypeString.Numeric:<br /><br />return Convert.ToDouble(Value).ToString("#,##0.00");<br /><br />case TypeString.Int:<br /><br />return Convert.ToInt64(Value).ToString("#,##0");<br /><br />case TypeString.Text:<br /><br />return Value;<br /><br />case TypeString.CEP:<br /><br />return string.Format("{0}.{1}-{2}",Value.Substring(0,2),Value.Substring(2,3),Value.Substring(5,3));<br /><br />case TypeString.Telephone:<br /><br />Value = Value.Replace("-","").Replace(" ","").Replace(".","");<br /><br />return string.Format("{0}-{1}",Value.Substring(0,Value.Length-4),Value.Substring(Value.Length-4,4));<br /><br />case TypeString.Currency:<br /><br />return Convert.ToDouble(Value).ToString("C");<br /><br />default:<br /><br />return Value;<br /><br />}<br /><br />}<br /><br />catch <br /><br />{<br /><br />return Value;<br /><br />}<br /><br />}

Code 1.2

Em resumo, utilizei muito string.Format com os padrões necessários para uma formatação legal. Em outro momento, utilizei Convert e tudo mais. Veja um exemplo abaixo:

string _cpf = FormatString("00000000000",TypeString.CPF);<br /><br />Response.Write(_cpf);<br /><br />Resultado na tela: 000.000.000-00

Bom, espero que tenham gostado e qualquer dúvida é só entrar em contato!

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil