Formatação cnpj

10 respostas
denisspitfire

Pessoal, eu queria o seguinte.

cnpj = cnpj.replace(".", "");
cnpj = cnpj.replace("/", "");

digamos que o cnpj venha com algum caracter que esta fora do lugar. Eu queria retirar tudo oque nao for numero da String… ao invez de fazer esse código acima.

Tem como com expressoes regulares?

10 Respostas

denisspitfire

por exemplo, nao da pra fazer isso?

System.out.println(cnpj.replace(/[^0-9]+/g,""));
Rodrigo_Sasaki
System.out.println(cnpj.replaceAll("\\D", ""));
denisspitfire

e agora, eu quero formatar como um cnpj. Tipo quero que ja saia com a formatação os . e tudo mais. Da pra fazer com expressao regular também?

Rodrigo_Sasaki
Dá sim, mas não esqueça de tratar as exceções
private static String removerMascara(String cnpj){
		return cnpj.replaceAll("\\D", "");
	}
	
	private static String adicionarMascara(String cnpj){
		Pattern pattern = Pattern.compile("(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})");
		Matcher matcher = pattern.matcher(cnpj);
		if(matcher.find()){
			return matcher.replaceAll("$1.$2.$3/$4-$5");
		}
		return cnpj;
	}
denisspitfire

nao posso usar a biblioteca pattern :frowning:

Rodrigo_Sasaki

Fica como um desafio pra você então :slight_smile:

Rodrigo_Sasaki

Dica: usando um StringBuilder a tarefa fica bem simples.

denisspitfire

super tranquilo

StringBuilder sBuilder = new StringBuilder(cnpj);
		sBuilder.insert(2, ".");
		sBuilder.insert(6, ".");
		sBuilder.insert(10, "/");
		sBuilder.insert(15, "-");
denisspitfire

nao tem como inserir dois ou mais de uma vez?

sBuilder.insert(2, ".",6,".");
E

Faça isto:

StringBuilder sBuilder = new StringBuilder(cnpj)
    .insert(2, ".")
    .insert(6, ".")
    .insert(10, "/")
    .insert(15, "-");
Criado 12 de abril de 2013
Ultima resposta 12 de abr. de 2013
Respostas 10
Participantes 3