Format String

4 respostas
L

Boas pessoal

Eu recebo o dados dos meus clientes no seguinte formato : 12.855,70 ; 25.000.25 ;

1.000,00 mas a minha aplicação nao aceita numeros e cada dado tem de ter 15 caracters

Por exemplo, os numeros acima teriam de ser assim : 000000001285570 ; 000000002500025 ;
000000000100000

Algume me pode ajudar com isso.

Obrigado desde ja !

4 Respostas

G

Não to com a aplicação aqui,
mas tenta algo como:

NumberFormat nf = new NumberFormat("000000000000000");
String valor = nf.format(100); 

//valor = 000000000000100
D

Podes tentar tbm fazer na munheca.

Um método para limpar pontos e virgulas, e outro que conta quantos caracteres tem a string e completa com 0 na frente até chegar a 15.

B

Cara, testa esse metodo ai ...

public StringBuilder formataString(String linhasArquivo, String separador){
		StringTokenizer st = new StringTokenizer(linhasArquivo, separador);
		StringBuilder newLine = new StringBuilder();
		while(st.hasMoreElements()){
			StringBuilder numTemp =  new StringBuilder(st.nextToken().trim().replaceAll("[.,]", ""));
			//System.out.println("Numero Velho:  "+numTemp);
			int tamanho = numTemp.length();
			int qtdeZeros = 15 - tamanho;
			
			for (int i = 0; i< qtdeZeros;i++){
				newLine.append("0");
			}
			newLine.append(numTemp);
			newLine.append(separador);
			
			//System.out.println("Numero Formatado:  "+newLine);
			numTemp = null;
		}
		System.out.println("Nova linha:  "+newLine);
		return newLine;
	}

este metodo recebe a string linhasArquivo, aqui eu testei com "2.855,70 ; 25.000.25 ;24.121,44" , pelo que entendi esse e' o padrao, e recebe tb o separador , que no seu caso e' ";".
E retorna newLine que sao os numeros concatenados por ; e com 15 posicoes ...
testa ai ...
ps: seria bom vc dar uma refatorada ai no codigo.

Abracos
qualquer coisa eh so falar ...
PS: e' bom dar uma refatorada no codigo

B

Cara, testa esse metodo ai ...

public StringBuilder formataString(String linhasArquivo, String separador){
		StringTokenizer st = new StringTokenizer(linhasArquivo, separador);
		StringBuilder newLine = new StringBuilder();
		while(st.hasMoreElements()){
			StringBuilder numTemp =  new StringBuilder(st.nextToken().trim().replaceAll("[.,]", ""));
			//System.out.println("Numero Velho:  "+numTemp);
			int tamanho = numTemp.length();
			int qtdeZeros = 15 - tamanho;
			
			for (int i = 0; i< qtdeZeros;i++){
				newLine.append("0");
			}
			newLine.append(numTemp);
			newLine.append(separador);
			
			//System.out.println("Numero Formatado:  "+newLine);
			numTemp = null;
		}
		System.out.println("Nova linha:  "+newLine);
		return newLine;
	}

este metodo recebe a string linhasArquivo, aqui eu testei com "2.855,70 ; 25.000.25 ;24.121,44" , pelo que entendi esse e' o padrao, e recebe tb o separador , que no seu caso e' ";".
E retorna newLine que sao os numeros concatenados por ; e com 15 posicoes ...
testa ai ...
ps: seria bom vc dar uma refatorada ai no codigo.

Abracos
qualquer coisa eh so falar ...
PS: e' bom dar uma refatorada no codigo

Criado 26 de setembro de 2007
Ultima resposta 1 de out. de 2007
Respostas 4
Participantes 4