2009-02-27 32 views
33

que tienen un cuadro de texto en Javascript. Cuando entro '0000.00' en el cuadro de texto, me gustaría saber cómo convertir a que sólo tener una ceros a la izquierda, como '0.00'.truncar los ceros de una cadena en Javascript

+0

necesidad de aclarar lo que es una "cadena" es. Si su "cadena" es un número decimal, entonces la respuesta será diferente que si su "cadena" es una cadena de texto. "00000,000" -> "0,000" sería una conversión decimal. "000TXT10001" -> "0TXT10001" requeriría una función de recorte. Por ejemplo, ¿qué esperas cuando la entrada es "0011.1100" -> "011.1100" o "11.11"? – ChronoFish

Respuesta

1

Prueba esto:

<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')"> 
13
var value= document.getElementById("theTextBoxInQuestion").value; 
var number= parseFloat(value).toFixed(2); 
+4

¿Esto causa problemas si el número de ceros a la izquierda del decimal es muy grande? – Eric

+0

Eric tiene razón, solo funcionará si tiene un cero inicial. Más que eso y fallas –

8

Parece que lo que desea es eliminar los ceros a la izquierda, a menos que sólo hay una izquierda ("0" para un entero o "0.xxx" para un flotador, donde x puede ser cualquier cosa).

Esto debería ser bueno para un primer corte:

while (s.charAt(0) == '0') {   # Assume we remove all leading zeros 
    if (s.length == 1) { break };  # But not final one. 
    if (s.charAt(1) == '.') { break }; # Nor one followed by '.' 
    s = s.substr(1, s.length-1) 
} 
+0

Esta es una buena solución. Confiar en las funciones integradas no siempre es la mejor opción. Convertiría esto en una función auxiliar que toma un argumento de cadena y devuelve la cadena formateada. –

+0

Funciona muy bien para mí. Solo aconsejaría agregar un fragmento de código para admitir números negativos (con "-" en el primer carácter). – Gaston

43

solución más simple es la siguiente. ¡Mira esto!

var resultString = document.getElementById("theTextBoxInQuestion") 
          .value 
          .replace(/^[0]+/g,""); 
+9

¿Perfecto? Er ... no funciona: ' 'se convierte en' 0000.00''' .00'' – MikeM

+0

@MikeM, entonces se podría usar 'sustituir (/^[0] +/g, "0")' – Andrew

5

Puede utilizar este código:

<script language="JavaScript" type="text/javascript"> 
<!-- 
function trimNumber(s) { 
    while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); } 
    return s; 
} 

var s1 = '00123'; 
var s2 = '000assa'; 
var s3 = 'assa34300'; 
var s4 = 'ssa'; 
var s5 = '121212000'; 

alert(s1 + '=' + trimNumber(s1)); 
alert(s2 + '=' + trimNumber(s2)); 
alert(s3 + '=' + trimNumber(s3)); 
alert(s4 + '=' + trimNumber(s4)); 
alert(s5 + '=' + trimNumber(s5)); 
// end hiding contents --> 
</script> 
22
str.replace(/^0+(?!\.|$)/, '') 

    '0000.00' --> '0.00' 
    '0.00' --> '0.00' 
    '00123.0' --> '123.0' 
     '0' --> '0' 
4

Ok una solución simple. El único problema es cuando la cadena es "0000.00" el resultado es cero. Pero además de eso, creo que es una buena solución.

var i = "0000.12"; 
var integer = i*1; //here's is the trick... 
console.log(i); //0000.12 
console.log(integer);//0.12 

Para algunos casos creo que esto puede funcionar ...

Cuestiones relacionadas