1. 程式人生 > >JS字符串補全方法padStart()和padEnd()

JS字符串補全方法padStart()和padEnd()

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()