Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vadio

[Resolvido] tratar string

Recommended Posts

Boa noite a todos.

 

estou tentando manipular uma string com caracteres numéricos para formata-la como um valor ex: X.XXX,XX .

 

minha função t vale um valor tipo "XXXX.XX" e eu preciso converter esse número para "X,XXX,XX"

 

tentei usar o charAt e atribuir o valor concatenado como mostra no pedaço da função abaixo.

como arrumar isso?

 

desde ja muito obrigado

 

 

...
		// t = float

		t = t.toString();
	for(var i=0; i<=t.length; i++){
		if((t.charAt(i) == ".") && (i>=4)){
			t = t.charAt(i) = ",";
			t = t.charAt(i-3) = t.charAt(i-3)+".";
		}
		document.getElementById("valorFinanciado").value+= t.charAt(i);
	}

		...

obs.: FireBug acusou isso:

invalid assignment left-hand side

calcValorFinanciado()calculos.js (linha 27)

onblur(blur )Te1TedoY...i9Q%3D%3D (linha 2)

[break on this error] t = t.charAt(i) = ",";

mas não intendi oq quer dizer

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei isso... resolvido

function soValorC(valor,dec){
  // parte decimal e inteira do n?mero
  intstr = '';
  decstr = '';
  temp_valor = '';
 
  // remove todos os caracteres que n?o s?o v?lidos
  var validos = "0123456789";
  var numero_ok = '';
  for(i=0;i<valor.length;i++){
	if(validos.indexOf(valor.substr(i,1)) != -1) {
		  temp_valor += valor.substr(i,1);
	}
  }
 
  // separa parte decimal de parte inteira
  if (temp_valor.length == 0) {
	intstr = "0";
	// concatena zeros
	for (i = 0; i < dec;i++) {
	  decstr += "0";
	}
  }
  else if (temp_valor.length == 1) {
	intstr = "0";
	// concatena zeros
	for (i = 0; i < (dec - 1);i++) {
	  decstr += "0";
	}
	decstr += temp_valor;
  }
  else if (temp_valor.length <= dec) {
	intstr = "0"
	decstr = temp_valor;
	for (i = temp_valor.length; i < dec; i++) {
	  decstr += "0";
	}
  }
  else {
	intstr = temp_valor.substring(0,(temp_valor.length - dec));
	decstr = temp_valor.substring((temp_valor.length - dec),temp_valor.length);
  }
 
  // remove zeros a esquerda da parte inteira
  temp_valor = intstr;
  intstr = '';
  primeiro_valor = false;
  for(i=0;i<temp_valor.length;i++){
	if (primeiro_valor == false) {
	  if (temp_valor.substr(i,1) != "0") {
		primeiro_valor = true;
		intstr += temp_valor.substr(i,1);
	  }	 
	}
	else {
	  intstr += temp_valor.substr(i,1);
	}   
  }
  if(intstr.length == 0) {
	intstr = "0";
  }
 
  // adiciona "." a cada 3 algarismos (partindo da direita para esquerda)
  temp_valor = intstr;
  intstr = '';
  ponto = 0;
  for (i = temp_valor.length; i > 0;i--) {
	if ( ((ponto % 3) == 0) &&
		  (ponto != 0) ){
	  intstr = temp_valor.substr(i -1,1) + "." + intstr;
	}
	else {
	  intstr = temp_valor.substr(i -1,1) + intstr;
	}
	ponto++;
  }
 
  // concatena v?rgula entre parte inteira e decimal
  temp_valor = intstr + "," + decstr;
 
  // retorna valor concatenado com v?rgula
  return temp_valor;
}

editado por Otata 10/01/2009 14:25

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu tenho um código que acabei de fazer e está funcionando aparentemente bem. Ele faz o seguinte:

Recebe qualquer valor numérico e converte para string no formato: xxx.xxx.xxx,xx

Obviamente, se o número for pequeno, ele retorna: x.xxx,xx ou mesmo xxx,xx

 

Fica aí a sugestão para quem se interessar. É semelhante ao código que você postou.

 

<html>
<head>
<title></title>
</head>
<body>
<script>
function reformatarString() {
/*
Código desenvolvido por: klonder
Postagem exclusiva em: www.forum.imasters.com.br
*/
var iText1 = document.getElementById("texto1");
var iText2 = document.getElementById("texto2");
var numFormatado = "";
var i;

//Defina os símbolos abaixo:
var simbolos = ".,/"; //Símbolos que serão removidos do número inicial
var sSeparadorCentavos = ","; //Define o separador dos centavos;
var sSeparadorCM = "."; //Define o separador das centenas, milhares, milhões etc.

//Passo 1: Apagando todos os símbolos no número;
for (i=0; i<iText1.value.length; i++) {
 letra = iText1.value.substring(i,i+1);
 	
	 if (simbolos.indexOf(letra,0) == -1) {
		numFormatado = numFormatado + letra;
	}
}
//Passo 2: Pegando os dois últimos dígitos:
var numFormatadoFinal = numFormatado.substr(numFormatado.length-2);

//Pegando os primeiros dígitos antes de sSeparadorDecimal;
var numInicial = numFormatado.substr(0,numFormatado.length-2);
var numFormatadoInicial = "";

var iControl = 2;
//Passo 4: Formatando o número com os separadores corretos:
for (i=numInicial.length; i>0; i--) {
	if (iControl == 0 && i > 1) {
		numFormatadoInicial = sSeparadorCM+numInicial.charAt(i-1)+numFormatadoInicial;
		iControl = 2;
	}else{
		numFormatadoInicial = numInicial.charAt(i-1)+numFormatadoInicial;
		//alert(numFormatadoInicial);
		iControl--;
	}
}
//Passo 5: Imprimindo o número já formatado em um campo text (por exemplo):
iText2.value = numFormatadoInicial + sSeparadorCentavos + numFormatadoFinal;
}
</script>

Defina o número que será formatado: <input type="text" id="texto1" value="1.2,3.4,5.89,4574.89">
<input type="button" value="OK" onClick="reformatarString()">

<br><br><input type="text" id="texto2">
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.