Como comparar caracteres em Java? função para validar tele

12 respostas
R

ae

estou fazendo uma agenda virtual e com dificuldades na hora de comparar dois caracteres
tenho uma função para avaliar se uma string contem um telefone na formatação XX-YYYY-YYYY, onde XX = DDD; YYYY-YYYY numero do telefone

não estou conseguindo…

qndo faço

//tel é uma string

if (tel.charAt(2) != -)

return false;

//isto para ver se o terceiro caracter da String é o “-”

como faço isso?
alguém tem uma função pronta para isso?

12 Respostas

D

em java os caracteres são delimitados por aspas simples, por isso tente assim:

if (tel.charAt(2) != '-') return false;

:wink:

R

valeu a dica… :lol:

só outro coisa, a função Character.isDigit() retorna true se for um digito

digito é um numero, certo? :stuck_out_tongue:

E

blz

o metodo isDigit da classe Character verifica se digito e valida na tabela unicode. se for valido ele retorna true. :lol:

valeu T+

R

blz…
vlw ai pelas dicas…
mas…
vc não tem uma classe ai pronte de validar epmail, telefone, cic, rg, cnpj, etc, em java?

D

tenho classe q valida CPF e CNPJ… :grin:

R

manda pra ca, por favor?

ou por e-mail?

[email removido]

D

melho colocar aqui pra quem quizer:

para ambos os metodos tem q passar o número sem nenhum traço, ponto ou barra. Ex: 02998301000181

o método retorna true se for válido.

valida CPF:
static public boolean CPF (String strCpf )
   {
      int     d1, d2;
      int     digito1, digito2, resto;
      int     digitoCPF;
      String  nDigResult;

      d1 = d2 = 0;
      digito1 = digito2 = resto = 0;

      for (int nCount = 1; nCount < strCpf.length() -1; nCount++)
      {
         digitoCPF = Integer.valueOf (strCpf.substring(nCount -1, nCount)).intValue();

         //multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.
         d1 = d1 + ( 11 - nCount ) * digitoCPF;

         //para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.
         d2 = d2 + ( 12 - nCount ) * digitoCPF;
      };

      //Primeiro resto da divisão por 11.
      resto = (d1 % 11);

      //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
      if (resto < 2)
         digito1 = 0;
      else
         digito1 = 11 - resto;

      d2 += 2 * digito1;

      //Segundo resto da divisão por 11.
      resto = (d2 % 11);

      //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
      if (resto < 2)
         digito2 = 0;
      else
         digito2 = 11 - resto;

      //Digito verificador do CPF que está sendo validado.
      String nDigVerific = strCpf.substring (strCpf.length()-2, strCpf.length());

      //Concatenando o primeiro resto com o segundo.
      nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

      //comparar o digito verificador do cpf com o primeiro resto + o segundo resto.
      return nDigVerific.equals(nDigResult);
   }
valida CNPJ:
static public boolean CNPJ( String str_cnpj )
    {
       int soma = 0, aux, dig;
       String cnpj_calc = str_cnpj.substring(0,12);

       if ( str_cnpj.length() != 14 )
         return false;

       char[] chr_cnpj = str_cnpj.toCharArray();

       // Primeira parte 
       for( int i = 0; i < 4; i++ )
         if ( chr_cnpj[i]-48 >=0 && chr_cnpj[i]-48 <=9 )
           soma += (chr_cnpj[i] - 48) * (6 - (i + 1)) ;
       for( int i = 0; i < 8; i++ )
         if ( chr_cnpj[i+4]-48 >=0 && chr_cnpj[i+4]-48 <=9 )
           soma += (chr_cnpj[i+4] - 48) * (10 - (i + 1)) ;
       dig = 11 - (soma % 11);

       cnpj_calc += ( dig == 10 || dig == 11 ) ?
                      "0" : Integer.toString(dig);

       // Segunda parte 
       soma = 0;
       for ( int i = 0; i < 5; i++ )
         if ( chr_cnpj[i]-48 >=0 && chr_cnpj[i]-48 <=9 )
           soma += (chr_cnpj[i] - 48) * (7 - (i + 1)) ;
       for ( int i = 0; i < 8; i++ )
         if ( chr_cnpj[i+5]-48 >=0 && chr_cnpj[i+5]-48 <=9 )
           soma += (chr_cnpj[i+5] - 48) * (10 - (i + 1)) ;
       dig = 11 - (soma % 11);
       cnpj_calc += ( dig == 10 || dig == 11 ) ?
                      "0" : Integer.toString(dig);

       return str_cnpj.equals(cnpj_calc);
    }
J

Tem classes de expressão regular que resolve este problema de maneira elegante…

Estão em java.util.regex, é muito interessante este pacote e ajuda bastante…

:grin:

R

hum…
vou dar uma olhada…

mas ninguem tem nada pronto para e-mail e telefone?

R

Tente usar a Classe java.util.regex.Pattern pra isso. Essa classe trabalha com patterns para validação de texto. Por exemplo para telefone você poderia usar o padrão \d{2}-\d{4}-\d{4}. Validando isso via código temos:

Pattern pattern = Pattern.compile("\d{2}-\d{4}-\d{4}"); Matcher matcher = pattern.matcher("12-3456-7890"); System.out.println(matcher.matches());
onde será exibido se o telefone 12-3456-7890 atende ao padrão escolhido no compile. Pesquise o JavaDoc dessa classe e nunca mais vc vai querer realizar validação manualmente.

Falows…

R

o trequinho mais complicado!
mas um dia eu chego lah! :slight_smile:

F

aproveitando que estão falando nisso, tenho a seguinte string para telefone:

^\([0-9]{2,4}\)[0-9]{2,4}\-[0-9]{4}$

o que devo mexer nela pra q aceite em branco tb

abs

Criado 30 de junho de 2004
Ultima resposta 13 de jul. de 2004
Respostas 12
Participantes 6