18 votos

Eliminar los ceros iniciales de un número en Javascript

Posible duplicado:
Truncar los ceros iniciales de una cadena en Javascript

¿Cuál es la forma más simple y compatible con los navegadores para eliminar los ceros iniciales de un número en Javascript?

Por ejemplo, si tengo un valor de cuadro de texto como 014 o 065, sólo debería devolver 14 o 65

46voto

naveen Puntos 21236

Pruebe parseInt .

parseInt("065", 10);

El segundo parámetro es para el radix y según la documentación siempre debe especificarse. MDN dice,

radix

Un número entero que representa el radio de la mencionada de la cadena. Especifique siempre este parámetro para eliminar la confusión del lector y para garantizar un comportamiento predecible. Diferentes implementaciones producen resultados diferentes cuando no se especifica un radix.
.............
.............
Si radix está indefinido o 0 (o ausente), JavaScript asume lo siguiente:

  • Si la entrada cadena comienza con "0x" o "0X", radix es 16 (hexadecimal) y el resto de la cadena se analiza.
  • Si la entrada cadena comienza con "0", radix es ocho (octal) o 10 (decimal). La elección exacta del radix depende de la implementación. ECMAScript 5 especifica que se usa 10 (decimal), pero no todos los navegadores soportan esto todavía. Por esta razón siempre especifican un radix cuando usan parseInt .
  • Si la entrada cadena comienza con cualquier otro valor, el radix es 10 (decimal).

Por ejemplo, en algunas implementaciones parseInt("01803") se rendirá 1 . Asumiendo que el objetivo es conseguir 1803 llamar a parseInt con un radio de 10 para asegurarse de que el análisis se hace en un sistema de numeración de base 10. Eso es: parseInt("01803", 10) se rendirá 1803 .

28voto

keymone Puntos 3947

regexp:

"014".replace(/^0+/, '')

10voto

Felix Kling Puntos 247451

No está claro por qué quieres hacer esto. Si quieres obtener el valor numérico correcto, podrías usar unary + [doctores] :

value = +value;

Si sólo quieres dar formato al texto, entonces regex podría ser mejor. Depende de los valores con los que estés tratando, diría yo. Si sólo tienes números enteros, entonces

input.value = +input.value;

está bien también. Por supuesto que también funciona para los valores de float, pero dependiendo de cuántos dígitos tengas después del punto, convertirlo en un número y volver a una cadena podría (al menos para mostrar) eliminar algunos.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X