Formatando CNPJ/CPF e CEP

13 respostas
tiagogn

Ola pessoal,

Teria alguma classe no java, pra q eu possa utilizar pra formatar CPF, CNPJ e CEP, como a NumberFormat para formatar numeros.

Valeu !!!
Ate +!

13 Respostas

foia

brazilutils ??

E

Se o negócio é só formatar pode ser que você resolva com um objeto da classe maskformater:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/MaskFormatter.html
http://www.imasters.com.br/artigo.php?cn=2364&cc=15

danilofabiano

Amigo, acho que tenho tudo que precisa.

//----------------inicia o campo de Cep-------------------------------------------        
     TextField tfcep;   
     try{

           javax.swing.text.MaskFormatter format_textField3 = new javax.swing.text.MaskFormatter("#####-###");

           tfcep = new javax.swing.JFormattedTextField(format_textField3);

        }catch (Exception e){}
//---------------------inicia campo cpf-------------------------------------------    
       TextField tfcpf; 
       try{

           javax.swing.text.MaskFormatter format_textField4 = new javax.swing.text.MaskFormatter("###.###.###-##");

           tfcpf = new javax.swing.JFormattedTextField(format_textField4);

        }catch (Exception e){}
//------inicia campo cpnj----------------------------------------------------------    
       TextField tfcnpj; 
       try{

           javax.swing.text.MaskFormatter format_textField4 = new javax.swing.text.MaskFormatter("##.###.###/####-##");

           tfcnpj = new javax.swing.JFormattedTextField(format_textField4);

        }catch (Exception e){}

Se precisar e eu poder ajudar, ficarei satisfeito.

dsiviotti

tiagogn:
Ola pessoal,

Teria alguma classe no java, pra q eu possa utilizar pra formatar CPF, CNPJ e CEP, como a NumberFormat para formatar numeros.

Valeu !!!
Ate +!

Depende do que você chama de formatar. Se você tem uma string e quer aplicar uma máscara e obter como saída um CPF/CEP formatado as classes CpfCnpj e Cep na API BrazilUtils te servem. Se você quer colocar uma máscara pronta em um JFormattedTextField também serve. Na classe CpfCnpj tem duas constantes: CNPJ_MASK e CPF_MASK, na classe Cep tem a CEP_MASK.
CAqi vai um código inútil só para mostrar como poderia funcionar:

Cep c = new Cep();
        MaskFormatter formatter = new MaskFormatter(c.getMask());
        JFormattedTextField textField = new JFormattedTextField();
        formatter.install(textField);

No caso da clase CpfCnpj deve-se passar o número do CPF ou CNPJ para que o método getMask() retorne a máscara de CPF ou CNPJ dependendo do tamanho (11 para CPF e 14 para CNPJ).
A versão das classes não está muito atual, mas você pode usar as constantes no seu MaskFormatter por enquanto.

tiagogn

Então pessoal , todos os exemplos q vcs me passaram utilizam o textfiled, mas eu não estou em uma aplicação swing e sim WEB, por tanto o usuario vai digitar o cpf como [telefone removido], e na proxima tela eu mando formatado como 00.000.000.-00, pois tb estou gerando pdf’s com o iText, e precisava formata-los la tb !, e eu não posso usar javascript, teria q ser em java mesmo !

Ate +!
Valeu !

dsiviotti

tiagogn:
Então pessoal , todos os exemplos q vcs me passaram utilizam o textfiled, mas eu não estou em uma aplicação swing e sim WEB, por tanto o usuario vai digitar o cpf como [telefone removido], e na proxima tela eu mando formatado como 00.000.000.-00, pois tb estou gerando pdf’s com o iText, e precisava formata-los la tb !, e eu não posso usar javascript, teria q ser em java mesmo !

Leia novamente a primeira parte da minha mensagem. Você pode usar para componentes visuais ou simplesmente para formatação de Strings. Eu postei um exemplo com TextField, aqui vai um com String simples:

Cep c = new Cep();
c.setCep("21021380");
System.out.println(c.toString); // A saída é 21.021-380

também…

CpfCnpj cpf = new CpfCnpj();
cpf.setCpfCnpj("[telefone removido]"); // É um Cpf
System.out.println(cpf.toString); // A saída é [CPF removido]
cpf.setCpfCnpj("12345678901234");
System.out.println(cpf.toString); // A saída é 12.345.678/9012-34
Marcos_Alexandre_Mig

Tentei encontrar tb uma classe em java que fizesse exatamente isso. Mas nao encontrei entao desenvolvi uma funcao que faz isso.

public static String getValueMaskFormat(String pMask, String pValue,
			boolean pReturnValueEmpty){

		/* 
		 * Verifica se se foi configurado para nao retornar a  
		 * mascara se a string for nulo ou vazia se nao 
		 * retorna somente a mascara. 
		 */ 
		if (pReturnValueEmpty == true
				&& (pValue == null || pValue.trim().equals("")))
			return "";

		/* 
		 * Substituir as mascaras passadas como  9, X, * por # para efetuar a formatcao
		 */
		pMask = pMask.replaceAll("*", "#");
		pMask = pMask.replaceAll("9", "#");
		pMask = pMask.toUpperCase().replaceAll("X", "#");

		/* 
		 * Formata valor com a mascara passada  
		 */
		for(int i = 0; i < pValue.length(); i++){
			pMask = pMask.replaceFirst("#", pValue.substring(i, i + 1));
		}

		/* 
		 * Subistitui por string vazia os digitos restantes da mascara 
		 * quando o valor passado é menor que a mascara   
		 */
		return pMask.replaceAll("#", "");
	}
dcbasso

Alguem fazer uma mascara para e-mail?

Estou tentando achar alguma coisa ou material falando sobre o assunto e nada… Abracos

S

regex para email:

[a-z0-9]+@[a-z0-9]+\.[a-z0-9]{2,4}

se quiser aceitar letras maiusculas tambem coloca [a-zA-Z0-9]

dcbasso

Cara precisava ver mesmo como fazer uma mascara… para deixar o TextField esperando um texto com “@ .com”, dai o cara vai digitando o e-mail ele vai preenchendo, ao usuario digitaar @ ele passar para o dominio do e-mail, dai ele pode deixar o .com ou colocar .com.br!!!

Algo neste sentido… sem limitar tamanho… abracos

wendel2s

Fiz uma funcao que recebe o valor e a mascara e retorna o resultado formatado.

public static String formatarString(String texto, String mascara) throws ParseException {
        MaskFormatter mf = new MaskFormatter(mascara);
        mf.setValueContainsLiteralCharacters(false);
        return mf.valueToString(texto);
    }
juceliohv

valeu Wendel2s,

Essa foi a melhor solução que vi até agora.

lucasportela

Realmente muito boa, mas ressucitou bem o tópico.

Criado 18 de agosto de 2005
Ultima resposta 2 de set. de 2011
Respostas 13
Participantes 11