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.