是否有JavaScript函数可以填充字符串以达到确定的长度?

我需要一个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;

};

<script type="text/javascript">

//<![CDATA[

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)

);

//]]>

</script>

但是我不知道它在做什么,这似乎对我不起作用。

回答:

我在这里找到了这个解决方案,这对我来说要简单得多:

var n = 123

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

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

(" " + n).slice(-5); // returns " 123" (with two spaces)

在这里,我对字符串对象进行了扩展:

String.prototype.paddingLeft = function (paddingValue) {

return String(paddingValue + this).slice(-paddingValue.length);

};

一个使用它的例子:

function getFormattedTime(date) {

var hours = date.getHours();

var minutes = date.getMinutes();

hours = hours.toString().paddingLeft("00");

minutes = minutes.toString().paddingLeft("00");

return "{0}:{1}".format(hours, minutes);

};

String.prototype.format = function () {

var args = arguments;

return this.replace(/{(\d+)}/g, function (match, number) {

return typeof args[number] != 'undefined' ? args[number] : match;

});

};

这将以“ 15:30”格式返回时间

以上是 是否有JavaScript函数可以填充字符串以达到确定的长度? 的全部内容, 来源链接: utcz.com/qa/401928.html

回到顶部