using System.Collections.Generic;
using System.Text.RegularExpressions;
public static void Main()
var telFixo = "49568952";
var TelefoneFixo = new Telefone(){ DDD = dddFixo, Numero = telFixo, Fixo = true};
var TelefoneAdicional = new Telefone(){ DDD = dddCel, Numero = telCel, Fixo = false};
var Endereco = new Endereco() { TelefoneFixo = TelefoneFixo, TelefoneAdicional = TelefoneAdicional};
ValidarTelefones(Endereco);
Console.WriteLine(Endereco.TelefoneFixo.RemoverCaracteres(" "));
public static bool ValidarTelefones( Endereco endereco )
erros += endereco.TelefoneFixo.ValidarTelefone();
erros += endereco.TelefoneAdicional.ValidarTelefone();
erros = endereco.TelefoneFixo.Validar() && String.IsNullOrEmpty(endereco.TelefoneAdicional.DDD) && String.IsNullOrEmpty(endereco.TelefoneAdicional.Numero) ? String.Empty : erros;
erros = endereco.TelefoneAdicional.Validar() && String.IsNullOrEmpty(endereco.TelefoneFixo.DDD) && String.IsNullOrEmpty(endereco.TelefoneFixo.Numero)? String.Empty : erros;
var errosLista = new List<string>(erros.Split(';'));
foreach (var msg in errosLista)
public string ListaDDDs { get; set;}
public string ListaDDDsNoveDigitos { get; set;}
public bool Fixo { get; set; }
public string DDD { get; set;}
public string Numero { get; set; }
public bool Requerido { get; set; }
this.ListaDDDs = "11;12;13;14;15;16;17;18;19;21;22;24;27;28;31;32;33;34;35;37;38;41;42;43;44;45;46;47;48;49;51;53;54;55;61;62;63;64;65;66;67;68;69;71;73;74;75;77;79;81;82;83;84;85;86;87;88;89;91;92;93;94;95;96;97;98;99";
this.ListaDDDsNoveDigitos = "11;12;13;14;15;16;17;18;19;21;22;24;27;28;31;32;33;34;35;37;38;71;73;74;75;77;79;81;82;83;84;85;86;87;88;89;91;92;93;94;95;96;97;98;99";
public string ValidarTelefone()
var tipo = this.Fixo ? "fixo" : "adicional";
erro += this.ValidarDDD() ? String.Empty: String.Format("DDD {0} inválido;", tipo);
erro += this.NumeroValido() ? String.Empty : String.Format("Telefone {0} inválido;",tipo);
public bool NumeroValido()
return this.VerificarNumeroTelefone()&&
this.ValidarNumeroInicialTelefone() &&
this.ValidarQuantidadeCaracteresTelefone() &&
!this.VerificarNumeroRepetidoTelefone();
return this.NumeroValido() && this.ValidarDDD();
var ListaDDDs = this.ListaDDDs;
List<string> listaDDDs = new List<string>(ListaDDDs.Split(';'));
if (listaDDDs.Exists(itemListaDDD => itemListaDDD.Equals(ddd))) return true;
public bool ValidarQuantidadeCaracteresTelefone()
var telefoneFixo = this.Fixo;
string numeroTelefone = telefone.RemoverCaracteres("-");
return numeroTelefone.Length.Equals(8) ? true : false;
List<string> listaDDDs = new List<string>(this.ListaDDDs.Split(';'));
if (!listaDDDs.Exists(itemListaDDD => itemListaDDD.Equals(telefone.DDD)))
return (numeroTelefone.Length.Equals(8) || numeroTelefone.Length.Equals(9)) ? true : false;
List<string> listaDDDsNoveDigitos = new List<string>(this.ListaDDDsNoveDigitos.Split(';'));
if (listaDDDsNoveDigitos.Exists(itemListaDDDNoveDigitos => itemListaDDDNoveDigitos.Equals(telefone.DDD)))
return (numeroTelefone.Length.Equals(8) || numeroTelefone.Length.Equals(9)) ? true : false;
return numeroTelefone.Length.Equals(8) ? true : false;
private bool VerificarNumeroRepetidoTelefone()
var telefoneFixo = this.Fixo;
string numeroTelefone = telefone.RemoverCaracteres("-");
return Regex.Match(numeroTelefone, @"^(\d)\1{7}$").Success;
if (String.IsNullOrWhiteSpace(telefone.DDD))
int qtdeCaracteres = numeroTelefone.Trim().Length - 1;
return Regex.Match(numeroTelefone, @"^(\d)\1{" + qtdeCaracteres + "}$").Success;
List<string> listaDDDsNoveDigitos = new List<string>(this.ListaDDDsNoveDigitos.Split(';'));
return listaDDDsNoveDigitos.Exists(itemListaDDDNoveDigitos => itemListaDDDNoveDigitos.Equals(telefone.DDD)) ?
Regex.Match(numeroTelefone, @"^(\d)\1{8}$").Success : Regex.Match(numeroTelefone, @"^(\d)\1{7}$").Success;
private bool ValidarNumeroInicialTelefone()
var telefoneFixo = this.Fixo;
var numeroTelefone = this.Numero;
numeroTelefone = telefone.RemoverCaracteres("-");
return telefoneFixo ? Regex.Match(numeroTelefone, @"^[012345]").Success :
Regex.Match(numeroTelefone, @"^[56789]").Success;
public string RemoverCaracteres( string caracteres){
return this.Numero.Replace( caracteres ,"");
private bool VerificarNumeroTelefone()
var numeroTelefone = telefone.RemoverCaracteres("-");
return Regex.Match(numeroTelefone, @"^\d{8,9}$").Success;
public Telefone TelefoneFixo { get; set;}
public Telefone TelefoneAdicional { get; set; }