Вопрос по javascript – Номер формата JavaScript на сегодняшний день всегда с 3 цифрами [дубликаты]

7

Possible Duplicate:
How can I create a Zerofilled value using JavaScript?

Я должен вывести номер дня, который всегда должен иметь 3 цифры. Вместо3 это должно написать003, вместо12 это должно написать012, Если оно больше чем100 вывести его без форматирования. Интересно, есть ли регулярное выражение, которое я мог бы использовать, или какой-нибудь быстрый встроенный скрипт, или я должен создать функцию, которая должна сделать это и вернуть результат. Спасибо!

Вы можете проверить ответы здесь:stackoverflow.com/questions/610406/… Jonathan M

Ваш Ответ

6   ответов
20

Как насчет:

 zeroFilled = ('000' + x).substr(-3)

Для произвольной ширины:

 zeroFilled = (new Array(width).join('0') + x).substr(-width)

Согласно комментариям, это кажется более точным:

lpad = function(s, width, char) {
    return (s.length >= width) ? s : (new Array(width).join(char) + s).slice(-width);
}
@VisioN: название говорит"always 3 digits"
@amnotiam Правильно, но есть и другая фраза, которую можно рассматривать по-другому:If it is greater than 100 output it without formatting, Кто знает, где правильный путь, хорошо бы быть в безопасности.
Первый не будет работать для чисел с 4 цифрами и более.
@VisioN: достаточно честно, пост обновлен.
... хотя отрицательный индекс потерпит неудачу в IE8 и ниже.
1

которая дополняет число нулями до определенной ширины:

function zeroFill(number, width) {
    width -= number.toString().length;
    if(width > 0) {
        return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number;
    }
    return number + ""; // always return a string
}

(отКак я могу дополнить значение ведущими нулями?)

Поскольку оригинальный ответ не объясняет, как работает эта функция, я сделаю это здесь.

width изначально содержит общую длину, которую вы хотите, такwidth - number_of_digits количество необходимых дополнительных символов.
new Array(len + 1).join(str) повторыstr len раз.
Регулярное выражение используется для добавления дополнительного дополнительного нуля в случае числа, содержащего десятичную точку, поскольку точка также была включена вnumber_of_digits определяется с помощьюnumber.toString().length

1

Вы можете сделать это...

("00" + day).slice(-3)

Он будет дополнять нулями, а затем.slice() всегда даст вам последние 3 значения строки.

3

его блог, Я просто оптимизировалzeroes создание.

function lpad(value, padding) {
    var zeroes = new Array(padding+1).join("0");
    return (zeroes + value).slice(-padding);
}

Использование:lpad(12, 3) результаты в"012"

1

var pad = function(n, length) {
    var str = "" + n;
    if(str.length < length) str = new Array(length - str.length).join("0") + str;
    return str;
};
@Phrogz Абсолютно
Я думаю ты имел ввиду.join("0") и я думаю, что ты хотел поставить этоbefore str.
1

​while ((val+"").length < 3​) {
    val = "0" + val;
}

DEMO: http://jsfiddle.net/WfXVn/

Похожие вопросы