使用jQuery在数字前面添加额外的零?

Chi*_*gns 78 javascript

我有上传的文件格式如此

MR 1

MR 2

MR 100

MR 200

MR 300

等等.

我需要做的是在MR 10之前添加额外的两个00s,并在MR10-99之前添加一个额外的0

所以文件格式化了

MR 001

MR 010

MR 076

等等.

任何帮助都会很棒!

Tod*_*ell 200

假设您将这些值存储在某些字符串中,请尝试以下操作:

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"
Run Code Online (Sandbox Code Playgroud)

  • @RémiBreton你的函数使用了太多次`.toString()`.我认为最好是`function pad(str,max){str = str.toString(); function main(str,max){return str.length <max?main("0"+ str,max):str; } return main(str,max); }` (7认同)
  • 我知道这是旧的,但这个功能帮助了我,我想我会加入它.这将对整数或浮点变量执行类型转换,这意味着您可以执行`pad(85,5)`以及`pad("85",5)`.`return(str).toString().length <max?pad("0"+(str).toString(),max):( str).toString();` (3认同)
  • String.prototype.padLeft = function padLeft(length,leadingChar){if(leadingChar === undefined)leadingChar ="0"; 返回this.length <length?(leadingChar + this).padLeft(length,leadingChar):this; }; (2认同)

Chr*_*mas 34

我有一个潜在的解决方案,我想这是相关的,我在这里发布了它:

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);
Run Code Online (Sandbox Code Playgroud)

我知道我总是会得到一个整数作为最小值(因为小时1,小时2)等等,但是如果你不能确定得到除空字符串之外的任何东西,你可以只做"000"+ d.getHours( )以确保你得到最低限度.

那么你想要3个数字?在我的代码中只使用-3而不是-2,我只是写这个,因为我想以超级简单的方式构建一个24小时制的时钟.


Wil*_*ilt 17

这是一个我喜欢的解决方案,因为它的简单性来自对类似问题的回答:

var n = 123

String('00000' + n).slice(-5); // returns 00123
('00000' + n).slice(-5);       // returns 00123
Run Code Online (Sandbox Code Playgroud)

  • 改进版本:函数leftPad(value,maxLength){return String('0'.repeat(maxLength)+ value).slice(-maxLength); } (3认同)

Mad*_*der 7

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"
Run Code Online (Sandbox Code Playgroud)