JS字符串補全方法padStart()和padEnd()
阿新 • • 發佈:2018-07-26
fin 需要 hub tle run convert 轉換 new 返回
背景:
var t = new Date().getMonth() + 1;
// t ===> 7,沒有0,怎麽展示成下面的樣子?
// 2018-07-23
解決上述問題的一個思路:
// 補0函數
function(num) {
return +num < 10 ? '0' + num : num;
}
padStart(len, str)
- 根據給定長度自動在字符串的前面補充想補充的字符串(只返回修改後的字符串,不修改原字符串)
- len 給定的長度,轉換後
- str 想補充的字符串
栗子:
var a = '7'; a.padStart(2, '0'); // a ===> 07
var b = 'hi';
b.padStart(10, 'hello');
// b ===> hellohelhi, 重復補充
var c = 'hi';
c.padStart(10, '');
// c ===> hi
var d = 'a'; d.padStart(5, false); // falsa d.padStart(5, []); // a d.padStart(5, {}); // [obja d.padStart(5, null); // nulla d.padStart(5, function(){}); // funca
實現的思路:
var a = '22'
a.padStart(len, str)
偽代碼:
var res = ''
if (str.toString) {
res = str.toString();
}
else {
res = Object.prototype.toString.call(str);
}
return res;
res.repeat(len/2+1).slice(0, len - a.length) + a
padEnd()
和padStart參數一樣,只是把想加的字符串加到後頭。
var a = 'aaa'.padEnd(15, {}); // aaa[object Obje
兼容性:
目前來看用於前端需要兼容,請看:string.polyfill.js
if (!String.prototype.padStart) {
String.prototype.padStart = function padStart(targetLength,padString) {
targetLength = targetLength>>0; //truncate if number or convert non-number to 0;
padString = String((typeof padString !== 'undefined' ? padString : ' '));
if (this.length > targetLength) {
return String(this);
}
else {
targetLength = targetLength-this.length;
if (targetLength > padString.length) {
padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed
}
return padString.slice(0,targetLength) + String(this);
}
};
}
node.js支持到版本8
JS字符串補全方法padStart()和padEnd()