Добавление дополнительных нулей перед числом с помощью jQuery?
У меня есть файл, который загружен, которые отформатированы так
г-1
г-2
100 г
200 г
300 г
ETC.
Что мне нужно сделать, это добавить дополнительные два 00s перед чем-либо перед MR 10 и добавить один дополнительный 0 перед MR10-99
Итак, файлы отформатированы
MR 001
г-010
MR 076
ETC.
любая помощь будет здорово!
12 ответов:
предполагая, что у вас есть эти значения, хранящиеся в некоторых строках, попробуйте следующее:
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"
У меня есть потенциальное решение, которое я думаю уместна, я написал об этом здесь:
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-часовые часы очень простым способом.
вот решение, которое мне понравилось за его простоту от ответ на аналогичный вопрос:
var n = 123 String('00000' + n).slice(-5); // returns 00123 ('00000' + n).slice(-5); // returns 00123
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"
это функция, которую я обычно использую в своем коде для добавления нулей к числу или строке.
входы-это строка или число (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
Если вы разделите пространство, вы можете добавить ведущие нули, используя простую функцию, такую как:
function addZeros(n) { return (n < 10)? '00' + n : (n < 100)? '0' + n : '' + n; }таким образом, вы можете проверить длину строки, и если она меньше 6, разделить на пробел, добавить нули к числу, а затем соединить его вместе.
или как регулярное выражение:
function addZeros(s) { return s.replace(/ (\d$)/,' 00').replace(/ (\d\d)$/,' 0'); }Я уверен, что кто-то может сделать это с одной замены, а не две.
Edit-examples
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он поставит один или два нуля перед числом на конец строки с пробелом перед ним. Его не волнует, какой бит перед пространством.
просто для смеха сделать это долгий неприятный путь....:
(Примечание: Я не использовал это, и я бы не советовал использовать это.!)function pad(str, new_length) { ('00000000000000000000000000000000000000000000000000' + str). substr((50 + str.toString().length) - new_length, new_length) }
Я сам нуждался в чем-то подобном на днях, пуд вместо того, чтобы всегда 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" будет больше одного символа случаи.
в простых терминах, мы можем записать следующим образом,
for(var i=1;i<=31;i++) i=(i<10) ? '0'+i : i;//потому что большую часть времени нам это нужно для дня, месяца или количества вопросов.
знаю, это старый пост, но вот еще один короткий, эффективный путь:
edit: dur. если num не строка, вы бы добавили:
len -= String(num).length;другое, это все хорошо
function addLeadingZeros(sNum, len) { len -= sNum.length; while (len--) sNum = '0' + sNum; return sNum; }
var str = "43215"; console.log("Before : \n string :"+str+"\n Length :"+str.length); var max = 9; while(str.length < max ){ str = "0" + str; } console.log("After : \n string :"+str+"\n Length :"+str.length);это сработало для меня ! Чтобы увеличить нули, обновите 'макс'
рабочая Скрипка URL:добавление дополнительных нулей перед числом с помощью jQuery?:
str может быть числом или строкой.
formatting("hi",3); function formatting(str,len) { return ("000000"+str).slice(-len); }добавить больше нули если нужны большие цифры

Comments