public static string Formatar(string valor, string mascara)
{
MaskedTextProvider mtpCnpj = new MaskedTextProvider(mascara);
mtpCnpj.Set(valor);
var formatted = mtpCnpj.ToString();
if (formatted.IndexOf(" ") == -1) return formatted;
mascara = mascara.Replace("0", "#").Replace(@"\", "");
StringBuilder dado = new StringBuilder();
foreach (char c in valor)
{
if (Char.IsNumber(c) || c == 'x' || c == 'X')
dado.Append(c);
}
int indMascara = mascara.Length;
int indCampo = dado.Length;
for (; indCampo > 0 && indMascara > 0; )
{
if (mascara[--indMascara] == '#')
indCampo -= 1;
}
StringBuilder saida = new StringBuilder();
for (; indMascara < mascara.Length; indMascara++)
{
saida.Append((mascara[indMascara] == '#') ? dado[indCampo++] : mascara[indMascara]);
}
return saida.ToString();
}