Como comparar caracteres em Java? função para validar tele
12 respostas
R
Rubem_AzenhaPJ
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
em java os caracteres são delimitados por aspas simples, por isso tente assim:
if (tel.charAt(2) != '-')
return false;
R
Rubem_AzenhaPJ
valeu a dica… :lol:
só outro coisa, a função Character.isDigit() retorna true se for um digito
digito é um numero, certo?
E
EjuniorPJ
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
Rubem_AzenhaPJ
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
denis_arrudaPJ
tenho classe q valida CPF e CNPJ…
R
Rubem_AzenhaPJ
manda pra ca, por favor?
ou por e-mail?
[email removido]
D
denis_arrudaPJ
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);
}
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…
R
Rubem_AzenhaPJ
hum…
vou dar uma olhada…
mas ninguem tem nada pronto para e-mail e telefone?
R
rtrindPJ
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
Rubem_AzenhaPJ
o trequinho mais complicado!
mas um dia eu chego lah!
F
fabiostbPJ
aproveitando que estão falando nisso, tenho a seguinte string para telefone: