Formatando CNPJ/CPF e CEP

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 +!

brazilutils ??

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

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.

[quote=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 +! [/quote]

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.

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 00000000000, 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 !

[quote=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 00000000000, 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 !
[/quote]

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("12345678900"); // É um Cpf
System.out.println(cpf.toString); // A saída é 123.456.789-00
cpf.setCpfCnpj("12345678901234");
System.out.println(cpf.toString); // A saída é 12.345.678/9012-34

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("#", "");
	}

Alguem fazer uma mascara para e-mail?

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

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]

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

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);
    }
1 curtida

valeu Wendel2s,

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

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