To realizando a manutenção em um sistema não criado por mim. Criaram um método para formatar o CEP da seguinte maneira:
Esse NUM_OITO é uma constante. O mesmo para NUM_CINCO.
O problema é que quando chamo um relatório, o campo CEP está vindo em branco (no relatório PDF) somente para CEP iniciado com 0 (zero). Percebi na seguinte linha (if (c.length() != NUM_OITO)) do método que o erro pode estar ali. Parece que ele está desprezando este primeiro 0 (zero). Alguém conhece uma forma dele não desprezar este 0???
acho que o problema está na sua variavel cep, já que ela é do tipo long ele remove todos os zeros a esquerda. vc deveria colocar essa variavel como string
Alterei para String mas continua dando o mesmo problema. O cep continua não aparecendo. Somente para os cep’s iniciados com 0 (zero). Os demais cep’s que não iniciam com 0 (zero), continuam aparecendo normal após a alteração. O código ficou da sguinte forma:
public static String formatarCep(String cep) {
if (cep.equals("0")) {
return null;
}
String c = cep;
if (c.length() != NUM_OITO) {
return "";
}
return c.substring(0, NUM_CINCO) + "-" + c.substring(NUM_CINCO, c.length());
}
Ele ainda continua desprezando o 0 (zero). Ex: cep: 02566-130 ---- O sistema entende da seguinte forma 2566-130
o cep está vindo de onde? do banco? se sim no banco ele está salvo com ou sem zero? caso venha da tela trate ele o tempo todo como string não converta ele em nenhum momento para long integer ou algo parecido
Velho, já passei por isso. E pode ser que a minha solução te ajude.
No meu caso estava salvando em uma base de dados ORACLE e a coluna era um NUMBER.
O que acontecia, você passava o cep 0xxxx-xxx e o banco armazenava como xxxxxxx, por ser um NUMBER ele removia o ZERO da frente. Pode ser isso.
Caso for isso, faz uma validação se o length da tua variável ( te aconselho a converter para String como os demais colegas comentaram) e adiciona o ZERO na frente.
Faz tempo que fiz isso, mas se não me engado, todo o estado de São Paulo tem o ZERO na frente do cep.
O que fiz foi algo assim:
[code]String cep = “valor da coluna no DB”;
if(cep.legth ==7){
cep = “0” + cep;
}[/code]
Não sei te dizer se existe algum estado brasileiro que tenha mais de um CEP na esquerda. A aplicação que fiz ainda está funcionando e não deu pau ainda heuheuheuh
Abraço e espero te ajudado.
OBS: Notei que o tópico é antigo, mas vai que alguém ainda precise da solução e como não foi marcado como removido ainda o tópico, resolvi postar.