Como validar CPF com máscara?

4 respostas
silviosnjr

Ola!!
O problema é o seguinte, tenho um código de máscara de CPF para um JTextField, o código:

jtfCPF = new javax.swing.JTextField();
try{   
    javax.swing.text.MaskFormatter format_textField = new javax.swing.text.MaskFormatter("###.###.###-##");   
    jtfCPF = new javax.swing.JFormattedTextField(format_textField);   
}catch (Exception e){}

funciona legal até o momento em que encontrei um código para validar o CPF, o código:

public abstract class validarCPF extends Object {   
  
    private static String calcDigVerif(String num) {   
        Integer primDig, segDig;   
        int soma = 0, peso = 10;   
        for (int i = 0; i < num.length(); i++)   
                soma += Integer.parseInt(num.substring(i, i + 1)) * peso--;   
  
        if (soma % 11 == 0 | soma % 11 == 1)   
            primDig = new Integer(0);   
        else  
            primDig = new Integer(11 - (soma % 11));   
  
        soma = 0;   
        peso = 11;   
        for (int i = 0; i < num.length(); i++)   
                soma += Integer.parseInt(num.substring(i, i + 1)) * peso--;   
           
        soma += primDig.intValue() * 2;   
        if (soma % 11 == 0 | soma % 11 == 1)   
            segDig = new Integer(0);   
        else  
            segDig = new Integer(11 - (soma % 11));   
  
        return primDig.toString() + segDig.toString();   
    }   
  
    private static int calcSegDig(String cpf, int primDig) {   
        int soma = 0, peso = 11;   
        for (int i = 0; i < cpf.length(); i++)   
                soma += Integer.parseInt(cpf.substring(i, i + 1)) * peso--;   
           
        soma += primDig * 2;   
        if (soma % 11 == 0 | soma % 11 == 1)   
            return 0;   
        else  
            return 11 - (soma % 11);   
    }   
  
    public static String geraCPF() {   
        String iniciais = "";   
        Integer numero;   
        for (int i = 0; i < 9; i++) {   
            numero = new Integer((int) (Math.random() * 10));   
            iniciais += numero.toString();   
        }   
        return iniciais + calcDigVerif(iniciais);   
    }   
  
    public static boolean validaCPF(String cpf) {   
        if (cpf.length() != 11)   
            return false;   
  
        String numDig = cpf.substring(0, 9);   
        return calcDigVerif(numDig).equals(cpf.substring(9, 11));   
    }   
}

[color=red][size=18]Eis a dúvida, essa classe para validar CPF nunca vai conseguir validar um CPF com máscara, ja que ele faz a verificação com os pontos (.) e traços (-)… como eu faço para tirar a máscara para validar o CPF ???[/size][/color]
Espero anciosamente uma resposta… desde ja muito obrigado!!

4 Respostas

marciofermino

Amigo pq nao usao JS?:

xandevieira

Para retirar a mascara vc pode utilizar o cod. abaixo

public static String removeContaMask(String str){
    	StringBuffer pkWithoutMask = new StringBuffer("");
    	String pk = str;
    	try {
    		if (pk != null) {
    	    	for (int i = 0; pk.length() > i; i++) {
    	    		if (pk.charAt(i) != '.') {
    	    			pkWithoutMask.append(pk.charAt(i));
    	    		}
    		    }
    	    }
		} catch (Exception e) {
			e.printStackTrace();			
		}
		return pkWithoutMask.toString().trim();
    }
Linkel

Olá…
Você pode quebrar sua string para obter apenas os números…
Tem várias maneiras de se fazer isso…
“SubString” é uma delas…
Exercite a criatividade aí…
Um abraço!

jingle

ou pode tenta algo assim

String s = "";
            //cpf = string com seu cpf
            for (int x = 0; x < cpf.length(); x++) {
                  if (("[telefone removido]").indexOf(cpf.charAt(x) + "") > -1) {
                        s += (cpf.charAt(x) + "");
                  }
            }
            //pronto agora o s vai ter somente os numeros
Criado 27 de março de 2008
Ultima resposta 27 de mar. de 2008
Respostas 4
Participantes 5