Добавляем лишние нули перед числом, используя jQuery?

У меня есть загруженный файл, который отформатирован так

MR 1

MR 2

MR 100

MR 200

MR 300

ETC.

Что мне нужно сделать, это добавить дополнительные два 00s перед чем-либо перед MR 10 и добавить один дополнительный 0 до MR10-99

Итак, файлы отформатированы

MR 001

MR 010

MR 076

ETC.

Любая помощь будет замечательной!

Ответ 1

Предполагая, что у вас есть эти значения, хранящиеся в некоторых строках, попробуйте следующее:

function pad (str, max) {
  str = str.toString();
  return str.length < max ? pad("0" + str, max) : str;
}

pad("3", 3);    // => "003"
pad("123", 3);  // => "123"
pad("1234", 3); // => "1234"

var test = "MR 2";
var parts = test.split(" ");
parts[1] = pad(parts[1], 3);
parts.join(" "); // => "MR 002"

Ответ 2

У меня есть потенциальное решение, которое, как я полагаю, является релевантным, я опубликовал его здесь:

https://www.facebook.com/antimatterstudios/posts/10150752380719364

в основном, вы хотите минимальную длину 2 или 3, вы можете настроить, сколько 0 вы положили в этот фрагмент кода

var d = new Date();
var h = ("0"+d.getHours()).slice(-2);
var m = ("0"+d.getMinutes()).slice(-2);
var s = ("0"+d.getSeconds()).slice(-2);

Я знал, что всегда получаю как минимум одно целое число (причина часа 1, час 2) и т.д., но если вы не можете быть уверены в получении чего-либо, кроме пустой строки, вы можете просто сделать "000" + d.getHours(), чтобы убедиться, что вы получаете минимум.

тогда вы хотите 3 числа? просто используйте -3 вместо -2 в моем коде, я просто пишу это, потому что я хотел построить 24-часовые часы в суперлегком режиме.

Ответ 3

Вот решение, которое мне понравилось за его простоту от ответа на похожий вопрос:

var n = 123

String('00000' + n).slice(-5); // returns 00123
('00000' + n).slice(-5);       // returns 00123

ОБНОВИТЬ

Как и предполагал @RWC, вы, конечно, можете красиво обернуть это в общую функцию, подобную этой:

function leftPad(value, length) { 
    return ('0'.repeat(length) + value).slice(-length); 
}

leftPad(123, 5); // returns 00123

А для тех, кто не любит ломтик:

function leftPad(value, length) {
    value = String(value);
    length = length - value.length;
    return ('0'.repeat(length) + value)
}

Но если производительность имеет значение, я рекомендую прочитать связанный ответ, прежде чем выбрать одно из предложенных решений.

Ответ 4

function addLeadingZeros (n, length)
{
    var str = (n > 0 ? n : -n) + "";
    var zeros = "";
    for (var i = length - str.length; i > 0; i--)
        zeros += "0";
    zeros += str;
    return n >= 0 ? zeros : "-" + zeros;
}

//addLeadingZeros (1, 3) =   "001"
//addLeadingZeros (12, 3) =  "012"
//addLeadingZeros (123, 3) = "123"

Ответ 5

Это функция, которую я обычно использую в своем коде для добавления нулей в число или строку.

Входы представляют собой строку или число (str) и желаемую длину вывода (len).

var PrependZeros = function (str, len) {
    if(typeof str === 'number' || Number(str)){
    str = str.toString();
    return (len - str.length > 0) ? new Array(len + 1 - str.length).join('0') + str: str;
}
else{
    for(var i = 0,spl = str.split(' '); i < spl.length; spl[i] = (Number(spl[i])&& spl[i].length < len)?PrependZeros(spl[i],len):spl[i],str = (i == spl.length -1)?spl.join(' '):str,i++);
    return str;
}

};

Примеры:

PrependZeros('MR 3',3);    // MR 003
PrependZeros('MR 23',3);   // MR 023
PrependZeros('MR 123',3);  // MR 123
PrependZeros('foo bar 23',3);  // foo bar 023

Ответ 6

Если вы разделите пространство, вы можете добавить ведущие нули, используя простую функцию, например:

function addZeros(n) {
  return (n < 10)? '00' + n : (n < 100)? '0' + n : '' + n;
}

Итак, вы можете проверить длину строки и, если она меньше 6, разделить на пробел, добавить нули в число, а затем объединить его вместе.

Или как регулярное выражение:

function addZeros(s) {
  return s.replace(/ (\d$)/,' 00$1').replace(/ (\d\d)$/,' 0$1');
}

Я уверен, что кто-то может сделать это с одной заменой, а не с двумя.

Изменить - примеры

alert(addZeros('MR 3'));    // MR 003
alert(addZeros('MR 23'));   // MR 023
alert(addZeros('MR 123'));  // MR 123
alert(addZeros('foo bar 23'));  // foo bar 023

В конце строки будет помещен один или два нуля из числа в ряд с пробелом перед ним. Ему все равно, какой бит перед пространством.

Ответ 7

Просто для смеха сделайте это длинным противным способом....:
(ПРИМЕЧАНИЕ: ive не используется, и я бы не советовал использовать это.!)

function pad(str, new_length) {
    ('00000000000000000000000000000000000000000000000000' + str).
    substr((50 + str.toString().length) - new_length, new_length)
}

Ответ 8

Мне нужно было что-то подобное на днях, Пьюд, а не всегда 0, я хотел бы сказать, что я хочу проложить спереди. Вот что я придумал для кода:

function lpad(n, e, d) {
  var o = ''; if(typeof(d) === 'undefined'){ d='0'; } if(typeof(e) === 'undefined'){ e=2; }
  if(n.length < e){ for(var r=0; r < e - n.length; r++){ o += d; } o += n; } else { o=n; }
  return o; }

Где n - это то, что вы хотите заполнить, e - это мощность, которую вы хотите заполнить (количество символов должно быть длинным), а d - это то, что вы хотите, чтобы оно было дополнено. Кажется, что он хорошо работает для того, для чего мне это нужно, но он потерпит неудачу, если "d" больше одного символа, это некоторые случаи.

Ответ 10

str может быть числом или строкой.

formatting("hi",3);
function formatting(str,len)
{
   return ("000000"+str).slice(-len);
}

Добавьте нули, если нужны большие цифры

Ответ 11

В простых терминах мы можем записать следующее:

for(var i=1;i<=31;i++)
    i=(i<10) ? '0'+i : i;

//Потому что большую часть времени нам нужно это для дня, месяца или суммы.

Ответ 12

Знайте, что это старый пост, но здесь еще один короткий, эффективный способ: zeros

изменить: dur. если num не является строкой, вы должны добавить:

len -= String(num).length;

else, все это хорошо

function addLeadingZeros(sNum, len) {
    len -= sNum.length;
    while (len--) sNum = '0' + sNum;
    return sNum;
}