Olá Internautas,
Gostaria de mostrar hoje uma nova forma de formar string utilizando o C#.NET e alguns tipos definidos para formatação. Um artigo anterior criado, 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
O artigo citado anteriormente é este: Formatando String rapidamente [http://aspneti.com/formatando+string+rapidamente+784,0.aspx]. Bem, como o título diz é uma formatação rápida e 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 resolver o seu problema 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 estes tipos pois são os mais usados por mim em meus sistemas. Este 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. (Code 1.1)
public enum TypeString
{
Text,
Numeric,
CNPJ,
CPF,
Date,
Int,
CEP,
Telephone,
Currency
}
Referência: Code 1.1
Ainda no mesmo arquivo, criei outro método específico chamado FormatString recebendo dois tipos de valores. O 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. (Code 1.2)
public static string FormatString(string Value, TypeString tType)
{
try
{
switch (tType)
{
case TypeString.CNPJ:
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));
case TypeString.CPF:
return string.Format("{0}.{1}.{2}-{3}", Value.Substring(0, 3), Value.Substring(3, 3), Value.Substring(6, 3), Value.Substring(9, 2));
case TypeString.Date:
if (Convert.ToDateTime(Value) == Convert.ToDateTime("1/1/1900"))
return string.Empty;
else
return Convert.ToDateTime(Value).ToString("dd/MM/yyyy");
case TypeString.Numeric:
return Convert.ToDouble(Value).ToString("#,##0.00");
case TypeString.Int:
return Convert.ToInt64(Value).ToString("#,##0");
case TypeString.Text:
return Value;
case TypeString.CEP:
return string.Format("{0}.{1}-{2}",Value.Substring(0,2),Value.Substring(2,3),Value.Substring(5,3));
case TypeString.Telephone:
Value = Value.Replace("-","").Replace(" ","").Replace(".","");
return string.Format("{0}-{1}",Value.Substring(0,Value.Length-4),Value.Substring(Value.Length-4,4));
case TypeString.Currency:
return Convert.ToDouble(Value).ToString("C");
default:
return Value;
}
}
catch
{
return Value;
}
}
Referência: Code 1.2
Em resumo geral, 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);
Response.Write(_cpf);
Resultado na tela: 000.000.000-00
Bom, espero que tenham gostado qualquer dúvida pode entrar em contato pelo site.