[RESOLVIDO] Preencher espaços embranco com length()

11 respostas
T

estou tentando fazer um programinha que transforme um arquivo no layout SPED para o SINTEGRA (arquivos de empresas para informações federais)

e como sou iniciante estou com problema ao deixar espaços vazios em um determinado campo...
no codigo abaixo ele traz um retorno de um arraylist "RetornaColunaLinha("0000",10)" que contem 9 caracteres e escrevo o campo com 14 caracteres (9 do retorno e 5 embranco)

escrevendo.write(RetornaColunaLinha("0000",10)+quatorze_vazios).length()-RetornaColunaLinha("0000",10).length());
escrevendo.close();

consegui montar para que fiquei 14 caracteres(peguei um exemplo pesquisando no google), só q ele escreve o total de caracteres e nao o valor dele.
retorno no console: 14
quero que retorne: xxxxxxxxxxxxxx

ja tentei
.toString
String.valueOf()

desde ja Thanks ALL :)

11 Respostas

B

Talvez você queira usar um framework como http://www.beanio.org/ para ajudar neste teu trabalho.

(queria ter usado isso qdo trabalhei com o SINTEGRA alguns anos atrás)

E
String s = "abcde";
String t = String.format ("%-15.15s", s); // o campo fica com exatamente 15 posições, completadas com espaços à direita
String u = String.format ("%15.15s", s); // o campo fica com exatamente 15 posições, completadas com espaços à esquerda

Não sei se você precisa completar com espaços à esquerda ou à direita :slight_smile: - você não explicou

T

obrigado pela atenção
Bruno Laturner e
entanglement

massssssssssssss…sendo um pouco chato…

nao queria declarar Strings, pq cada retorno do arraylist vai ser uma string e dai teria que criar varias strings (nao eh preguiça… é tentando resumir)

nao teria possibilidade de eu obter o resultado desses 14 digitos q o length() ta me retornando; em forma de texto?

caso nao tenha dai fecharia o topico…

T

nao é bem em forma de texto… e sim mostrar os caracteres que o length() ta contando

B

Não consigo compreender o que o teu código está fazendo. O que RetornaColunaLinha faz exatamente? O que são esses parâmetros dele?

Se quiser pegar 10 caracteres, da coluna 25 à 35 de uma linha, seria linha.substring(24, 35).

E

tibum:
obrigado pela atenção
Bruno Laturner e
entanglement

massssssssssssss…sendo um pouco chato…

nao queria declarar Strings, pq cada retorno do arraylist vai ser uma string e dai teria que criar varias strings (nao eh preguiça… é tentando resumir)

nao teria possibilidade de eu obter o resultado desses 14 digitos q o length() ta me retornando; em forma de texto?

caso nao tenha dai fecharia o topico…

Eu só declarei a string para facilitar seu entendimento. Pelo jeito, acabei mais atrapalhando que ajudando. Não sabe trabalhar diretamente com as expressões (String.format)?

T

Bruno Laturner
o “RetornaColunaLinha(“0000”,10)” ele é um retorno do arraylist do arquivo do SPED.

ele procura dentro do arquivo sped a linha que começa com “0000” e traz o valor da coluna 10…

o problema nao esta em buscar o valor e sim deixar os espaços embranco apos o retorno, no caso 14 caracteres (coluna 10 + o restante até 14)

entanglement pesquisei mais sobre o string.format acho q isso ira me ajudar :slight_smile: (em alguns casos vou completar com numero “0” )

só mais uma duvida, no meu caso ele esta retornando numeros “132456789” usando esse

String.format ("%-14.14s" , RetornaColunaLinha("0000",10));

ele ira trazer "123456789 " ?

as vezes por ser iniciante nao sei me expressar bem… :slight_smile:

E

Pois é, vou apresentar as opções, e espero que você consiga escolher uma delas. Não quero ficar analisando seu problema, e quem tem de resolver seu problema é você.

String.format ("%-15.15s", "123") --> "123            "
String.format ("%15.15s", "123") --> "            123"
E

Para completar com zeros à esquerda, use “%015d”:

String.format ("%015d", 123) --> "000000000000123"
T

entanglement otimo… obrigado pelos exemplos… vou fazer o teste em casa dai posto o resultado

Bruno Laturner e entanglement obrigado ate o momento

T

deu certo :slight_smile: Obrigado a todos!

Atualizando… achei um topico que me ajudou bastante…e irei utilizar dessa forma.
to atualizando caso alguem tenha mesma duvida

Criado 19 de fevereiro de 2013
Ultima resposta 19 de fev. de 2013
Respostas 11
Participantes 3