我需要一个JavaScript函数,它可以取一个值,并将其填充到给定的长度(我需要空格,但任何事情都会做)。我发现了这个,但我不知道它在做什么,它似乎对我不起作用。
String.prototype.pad = function(l, s, t) {
return s || (s = " "),
(l -= this.length) > 0 ?
(s = new Array(Math.ceil(l / s.length) + 1).join(s))
.substr(0, t = !t ? l : t == 1 ?
0 :
Math.ceil(l / 2)) + this + s.substr(0, l - t) :
this;
};
var s = "Jonas";
document.write(
'<h2>S = '.bold(), s, "</h2>",
'S.pad(20, "[]", 0) = '.bold(), s.pad(20, "[]", 0), "<br />",
'S.pad(20, "[====]", 1) = '.bold(), s.pad(20, "[====]", 1), "<br />",
'S.pad(20, "~", 2) = '.bold(), s.pad(20, "~", 2)
);
下面是一个JavaScript函数,它使用自定义符号添加指定数量的填充。该函数接受三个参数。
padMe --> string or number to left pad
pads --> number of pads
padSymble --> custom symbol, default is "0"
function leftPad(padMe, pads, padSymble) {
if(typeof padMe === "undefined") {
padMe = "";
}
if (typeof pads === "undefined") {
pads = 0;
}
if (typeof padSymble === "undefined") {
padSymble = "0";
}
var symble = "";
var result = [];
for(var i=0; i < pads; i++) {
symble += padSymble;
}
var length = symble.length - padMe.toString().length;
result = symble.substring(0, length);
return result.concat(padMe.toString());
}
以下是一些结果:
> leftPad(1)
"1"
> leftPad(1, 4)
"0001"
> leftPad(1, 4, "0")
"0001"
> leftPad(1, 4, "@")
"@@@1"
包括所有选项
function padding(stringToBePadded, paddingCharacter, totalLength, padLeftElseRight){
//will pad any string provided in first argument, with padding character provide in 2nd argument and truncate to lenght provided in third argument, padding left if 4th argument true or undefined, right if false.
// i.e. padding("lode","x","10") --> "xxxxxxlode"
// i.e. padding("lode","x","10",true) --> "xxxxxxlode"
// i.e. padding("lode","x","10",false) --> "lodexxxxxx"
// i.e. padding("12","0","5") --> "00012"
{
padLeftElseRight = typeof padLeftElseRight !== 'undefined' ? padLeftElseRight : true;
}
if (stringToBePadded.length > totalLength){
// console.log("string too long to be padded");
return stringToBePadded;
}
var paddingString = paddingCharacter.repeat(totalLength);//make long string of padding characters
if ( padLeftElseRight){
return String(paddingString+stringToBePadded).slice(-totalLength);
}else{
return String(stringToBePadded+paddingString).slice(0,totalLength);
}
}