protected void ValidateMovieModel(out string message)
 {
     if (String.IsNullOrWhiteSpace(Name) || !(Name.Length > 3))
     {
         message = "O nome do cinema deve conter no mínimo 4 caracteres";
     }
     else if (String.IsNullOrWhiteSpace(StreetName) || !(StreetName.Length > 3))
     {
         message = "A rua deve conter no mínimo 4 caracteres";
     }
     else if (!Regex.IsMatch(ZipCode.ToString(), @"^\d{8}$"))
     {
         message = "Cep com formato inválido";
     }
     else if (!Regex.IsMatch(NumberAddress.ToString(), @"^\d{0,6}$"))
     {
         message = "Quantidade de digitos inválida";
     }
     else if (String.IsNullOrWhiteSpace(CityName) || !(CityName.Length > 2))
     {
         message = "Informe uma cidade válida";
     }
     else if (String.IsNullOrWhiteSpace(State) || !Regex.IsMatch(State, @"^[A-Z]{2}$"))
     {
         message = "Informe um Estado válido Ex: RJ";
     }
     else
     {
         message = "";
     }
 }
        public static string FindNumbers(string sentence, Dialect dialect)
        {
            if (sentence.Length < 2)
            {
                return(sentence);
            }
            if (sentence.ContainsCheck("#"))
            {
                //HACK: Could be a stray #
                return(sentence);
            }

            string lastBit = "";

            if ("!.?:".ContainsCheck(sentence[sentence.Length - 1]))
            {
                lastBit  = sentence[sentence.Length - 1].ToString();
                sentence = sentence.Substring(0, sentence.Length - 1);
            }

            Token[] tokens = sentence.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(x => new Token(x)).ToArray();

            List <NumberAddress> numbers = new List <NumberAddress>();
            NumberAddress        number  = new NumberAddress();

            string[] validNumberTokens = Token.StupidNumbers;
            if (dialect.NumberType == "Stupid")
            {
                validNumberTokens = Token.StupidNumbers;//ala, wan, tu, mute
            }
            else if (dialect.NumberType == "Half Stupid" || dialect.NumberType == "Poman")
            {
                validNumberTokens = Token.HalfStupidNumbers; //mute, ale etc.
            }
            else if (dialect.NumberType == "Body")
            {
                validNumberTokens = Token.BodyNumbers; //0-10 using various body parts.
            }


            bool inNumber = false;

            for (int i = 0; i <= tokens.Length - 1; i++)
            {
                if (Number.IsPomanNumber(tokens[i]))
                {
                    number.NumberEndsAt = i;
                    number.NumberEndsAt = i;
                    numbers.Add(number);
                    inNumber = false;
                    number   = new NumberAddress();
                    continue;
                }
                if (inNumber)
                {
                    if (validNumberTokens.Contains(tokens[i].Text))
                    {
                        if (inNumber && i == tokens.Length - 1)
                        {
                            number.NumberEndsAt = i;
                            numbers.Add(number);
                            inNumber = false;
                            number   = new NumberAddress();
                        }
                        continue;
                    }
                    else
                    {
                        number.NumberEndsAt = i - 1;
                        numbers.Add(number);
                        inNumber = false;
                        number   = new NumberAddress();
                    }
                }
                else if (validNumberTokens.Contains(tokens[i].Text))
                {
                    if (tokens[i].Text == "ala")
                    {
                        //Can't start with 0. (ala wan?)
                        //Also causes too many false positives
                        continue;
                    }
                    if (i > 0 && "mi|sina|ona".ContainsCheck(tokens[i - 1]))
                    {
                        //mi tu isn't really a number. It's a dual pronoun.
                        continue;
                    }

                    number.NumberStartsAt = i;
                    inNumber = true;
                }


                if (inNumber && i == tokens.Length - 1)
                {
                    number.NumberEndsAt = i;
                    numbers.Add(number);
                    inNumber = false;
                    number   = new NumberAddress();
                }
            }

            StringBuilder sb = new StringBuilder(sentence.Length);

            inNumber = false;
            NumberAddress address = null;

            for (int i = 0; i <= tokens.Length - 1; i++)
            {
                if (address == null)
                {
                    address = numbers.FirstOrDefault(x => x.NumberStartsAt == i);
                    if (address != null)
                    {
                        sb.Append("#");
                        inNumber = true;
                    }
                }

                if (address != null)
                {
                    sb.Append(tokens[i]);

                    if (i >= address.NumberStartsAt && i < address.NumberEndsAt)
                    {
                        sb.Append("-");
                    }
                    else
                    {
                        address = null;
                        sb.Append(" ");
                    }
                }
                else
                {
                    sb.Append(tokens[i]);
                    sb.Append(" ");
                }
            }
            if (sb.Length > 0)
            {
                sb.Remove(sb.Length - 1, 1);
            }
            sb.Append(lastBit);
            return(sb.ToString());
        }