Formatação cnpj

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?

por exemplo, nao da pra fazer isso?

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

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?

Dá sim, mas não esqueça de tratar as exceções[code] 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;
}[/code]

nao posso usar a biblioteca pattern :frowning:

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

Dica: usando um StringBuilder a tarefa fica bem simples.

super tranquilo

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

nao tem como inserir dois ou mais de uma vez?

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

Faça isto:

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