Mascara CPF/CNPJ - Remover e adicionar ao BD!

Bom Dia a todos!!!

Seguinte pessoal… Preciso trabalhar com mascaras dentro dos meus TextFields… Já implementei a estrutura para add as mascaras:

[code]try{

	    cpf = new MaskFormatter("###.###.###-##"); 
	    cnpj = new MaskFormatter("##.###.###/####-##");
	      
	  }
	  catch(Exception e){
	      JOptionPane.showMessageDialog(null, e);
	      
	  }[/code]

Depois instanciei:

Está funcionando perfeitamente. Em seguida utilizei esse método para remover a mascara do CPF, antes de salvar no BD Access:

[code]public String removeMask(String cpf) {

String str = cpf;

while (str.indexOf("-") != -1) {
  if (str.indexOf("-") != 0) {
    str = str.substring(0, str.indexOf("-")) +
        str.substring(str.indexOf("-") + 1);
  }
  else {
    str = str.substring(str.indexOf("-") + 1);
  }
}
while (str.indexOf(".") != -1) {
  if (str.indexOf(".") != 0) {
    str = str.substring(0, str.indexOf(".")) +
        str.substring(str.indexOf(".") + 1);
  }
  else {
    str = str.substring(str.indexOf(".") + 1);
  }
}
return str;

}[/code]

E o método está funcionado muito bem. Porém, gostaria de saber se existe uma forma mais simples para remoção de mascaras, tanto para CPF, CNPJ, DATA,CEP etc…

Já pesquisei métodos pra remover a mascara do CNPJ, mais não achei nada relacionado.

Desde já agradeço!!!

Por favor, não use marcações para coisas como [Dúvida], [Ajuda], [Socorro], [Urgente].

Isso tudo é óbvio.

Por que você criou um método tão complicado, se podia usar o getValue() do JFormattedTextField?
Ele retorna o valor do campo sem a máscara.

se você não utiliza de nenhum framework para desmascarar, o negócio e fazer “na unha” mesmo

[quote=ViniGodoy]Por favor, não use marcações para coisas como [Dúvida], [Ajuda], [Socorro], [Urgente].

Isso tudo é óbvio.

Por que você criou um método tão complicado, se podia usar o getValue() do JFormattedTextField?
Ele retorna o valor do campo sem a máscara.[/quote]

Poderia por favor dar um exemplo usando o getValue() em cima da parte do meu código que postei?

bom, basicamente, se você quer remover a máscara de dados numéricos, é muito simples. pode fazer assim:public String removerMascara(String str){ return str.replaceAll("\\D", ""); }
Lembre-se que só funciona com os tipos que você especificou: CPF, CNPJ, telefone, RG, etc. Porque são números.

Só para explicar um pouco, o “\D” é uma expressão regular que casa com qualquer coisa que não seja um número [0-9], portanto ele vai varrer sua String, e tudo o que não for um número, ele vai substituir por vazio.

[quote=digaoneves]bom, basicamente, se você quer remover a máscara de dados numéricos, é muito simples. pode fazer assim:public String removerMascara(String str){ return str.replaceAll("\\D", ""); }
Lembre-se que só funciona com os tipos que você especificou: CPF, CNPJ, telefone, RG, etc. Porque são números.

Só para explicar um pouco, o “\D” é uma expressão regular que casa com qualquer coisa que não seja um número [0-9], portanto ele vai varrer sua String, e tudo o que não for um número, ele vai substituir por vazio.[/quote]

Obrigado pela resposta.

Funcionou certinho e é bem mais prático. Aproveitando, deixa eu perguntar outra coisa.

Depois quando eu consultar o CPF no BD (Access), ele vai me mostrar na tela os dados referente aquele CPF pesquisado. Quando ele for preencher o campo da data por exemplo, a mascara já vai ta lá… Então gostaria de saber se quando eu fizer a pesquisa pra mostrar os dados na tela, vai ser necessário setar a mascara novamente para aquele dado que vai vir do BD, ou só de meu TextField já possuir a mascara, vai ser preenchido corretamente.

Grato!!!

Cara, sinceramente, faz tanto tempo que não mexo com projetos desktop que não vou saber responder sua pergunta.

Minha sugestão é: Teste, ué! :slight_smile:

[quote=digaoneves]Cara, sinceramente, faz tanto tempo que não mexo com projetos desktop que não vou saber responder sua pergunta.

Minha sugestão é: Teste, ué! :)[/quote]

AhauHAuh… Sem problemas… Ultimamente é o que mais anda fazendo “testando códigos”… Sou iniciante em Java, estou no 5º Período da Eng. da Computação, e vejo que ainda sou muito fraco pra programar… Tô correndo atrás pra tentar melhorar :wink:

Obrigado.