Aquí hay otra manera. Viene de algo que hice que debe hacerse miles de veces en una carga de página. Es bastante eficiente con la CPU codificar una cadena de ceros una vez, y cortar tantas veces como sea necesario para el teclado tantas veces como sea necesario. Realmente me gusta el método Power of 10, eso es bastante flexible.
De todos modos, esto es tan eficiente como podría llegar a:
Para la pregunta original, elegir uno de los casos ...
var number = 1310;
var number = 120;
var number = 10;
var number = 7;
continuación
// only needs to happen once
var zeroString = "00000";
// one assignment gets the padded number
var paddedNum = zeroString.substring((number + "").length, 4) + bareNum;
//output
alert("The padded number string is: " + paddedNum);
Por supuesto, todavía necesita validar la entrada. Porque esto sólo funciona de forma fiable bajo las siguientes condiciones:
- número de ceros en la zeroString es desired_length + 1
- Número de dígitos de su número de partida es menor o igual a la longitud deseada
Antecedentes:
Tengo un estuche que necesita un número de longitud fija (14 dígitos) sin relleno. Quería ver qué tan básico podía hacer esto.Se ejecuta decenas de miles de veces en una carga de página, por lo que la eficiencia es importante. No es del todo reutilizable tal como está, y es un poco poco elegante. Excepto que es muy muy simple.
Para cadena deseada de n dígitos, este método requiere una cadena de (al menos) n + 1 ceros. El índice 0 es el primer personaje de la cadena, que nunca se usará, así que realmente podría ser cualquier cosa.
Nótese también que String.substring() es diferente de String.substr()!
var bareNum = 42 + '';
var zeroString = "000000000000000";
var paddedNum = zeroString.substring(bareNumber.length, 14) + bareNum
Esto tira de ceros de zeroString a partir de la posición de búsqueda de la longitud de la cadena, y continúa para obtener ceros a la longitud necesaria de 14. Mientras que "14" en la tercera línea es un número entero menor que el número de caracteres en zeroString, funcionará.
¿No desea lanzar 1310 a la cadena "1310", como si hubiera lanzado todas las otras cajas a las cadenas? –
Estoy de acuerdo con Šime Vidas: mi respuesta a continuación lo hará. –
Consulte: http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript – Thai