Как добавить начальные нули к значению?
Как я могу дополнить значение нулями слева в JavaScript? Я предполагаю, что могу создать кастомную функцию для добавления нулей к приведенному значению, но интересно, есть ли более прямой способ сделать это?
Примечание: Под дополнением значения я понимаю это в контексте базы данных (где 6-значное дополненное представление числа 5 будет "000005").
5 ответ(ов)
Я не могу поверить, что здесь так много сложных ответов... Просто используйте это:
var zerofilled = ('0000' + n).slice(-4);
Пример использования:
let n = 1;
var zerofilled = ('0000' + n).slice(-4);
console.log(zerofilled); // Вывод: '0001'
Этот код просто добавляет нули перед числом n
и обрезает строку, чтобы получить последние 4 символа. Таким образом, вы всегда получите четырехзначное число с нулями спереди, если это необходимо.
Вы можете использовать простой способ: добавьте умножение строк к переменной pad
и превратите это в функцию. Вот пример кода:
var pad = "000000";
var n = '5';
var result = (pad + n).slice(-pad.length);
В качестве функции это будет выглядеть так:
function paddy(num, padlen, padchar) {
var pad_char = typeof padchar !== 'undefined' ? padchar : '0';
var pad = new Array(1 + padlen).join(pad_char);
return (pad + num).slice(-pad.length);
}
var fu = paddy(14, 5); // 00014
var bar = paddy(2, 4, '#'); // ###2
Эта функция позволяет вам определять длину дополнения и символ, который будет использоваться для заполнения. Если не указать символ для дополнения, будет использован '0' по умолчанию.
Вот что я использовал для дополнения числа до 7 символов:
("0000000" + number).slice(-7)
Этот подход, вероятно, подойдет большинству пользователей.
Редактирование: Если вы хотите сделать это более универсальным, вы можете использовать:
("0".repeat(padding) + number).slice(-padding)
Редактирование 2: Обратите внимание, что начиная с ES2017 вы можете использовать String.prototype.padStart
:
number.toString().padStart(padding, "0")
Если известно, что количество заполняемых нулями символов не превысит определенного значения, можно сделать это без использования циклов:
var fillZeroes = "00000000000000000000"; // максимальное количество заполняемых нулями символов
function zeroFill(number, width) {
// Убедимся, что это строка
var input = number + "";
var prefix = "";
if (input.charAt(0) === '-') {
prefix = "-";
input = input.slice(1);
--width;
}
var fillAmt = Math.max(width - input.length, 0);
return prefix + fillZeroes.slice(0, fillAmt) + input;
}
Примеры тестирования можно найти здесь: http://jsfiddle.net/jfriend00/N87mZ/
Таким образом, данный способ позволяет эффективно добавлять нули перед числом, при этом избегая циклов и улучшая читаемость кода.
Быстрый и простой способ:
y = (new Array(count + 1 - x.toString().length)).join('0') + x;
Если, например, x = 5
и count = 6
, то в результате вы получите y = "000005"
.
Этот код создает массив длиной, равной разности между count + 1
и длиной числа x
, затем заполняет его нулями и конкатенирует с x
. Это гарантирует, что итоговая строка y
имеет нужную вам длину, добавляя перед x
достаточное количество нулей.
JavaScript: Добавление ведущих нулей к дате
Как перенаправить на другую веб-страницу?
Где найти документацию по форматированию даты в JavaScript?
Как проверить, содержит ли массив строку в TypeScript?
Ссылка и выполнение внешнего JavaScript-файла, размещенного на GitHub