JS文字列補完方法padStart()とpadEnd()
2283 ワード
背景:
上記の問題を解決する一つの考え方:所定の長さに基づいて自動的に文字列の前に補足したい文字列を補充する(修正後の文字列のみを返し、元の文字列は変更しない) len所与の長さ、変換後 str補足したい文字列
栗:
実現の構想:
疑似コード:
互換性:
現在、フロントエンドで使用するには互換性が必要です.stringを参照してください.polyfill.js
node.jsはバージョン8にサポートされています
転載先:https://www.cnblogs.com/hongrunhui/p/9370954.html
var t = new Date().getMonth() + 1;
// t ===> 7, 0, ?
// 2018-07-23
上記の問題を解決する一つの考え方:
// 0
function(num) {
return +num < 10 ? '0' + num : num;
}
padStart(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にサポートされています
転載先:https://www.cnblogs.com/hongrunhui/p/9370954.html