前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS字符串补全方法padStart()和padEnd()

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

作者头像
用户1749219
发布2018-08-08 17:50:03
1.6K0
发布2018-08-08 17:50:03
举报

背景:

代码语言:javascript
复制
var t = new Date().getMonth() + 1;
// t ===> 7,没有0,怎么展示成下面的样子?
// 2018-07-23

解决上述问题的一个思路:

代码语言:javascript
复制
// 补0函数
function(num) {
    return +num < 10 ? '0' + num : num;
}

padStart(len, str)

  • 根据给定长度自动在字符串的前面补充想补充的字符串(只返回修改后的字符串,不修改原字符串)
    • len 给定的长度,转换后
    • str 想补充的字符串

栗子:

代码语言:javascript
复制
var a = '7';
a.padStart(2, '0');
// a ===> 07
代码语言:javascript
复制
var b = 'hi';
b.padStart(10, 'hello');
// b ===> hellohelhi, 重复补充
代码语言:javascript
复制
var c = 'hi';
c.padStart(10, '');
// c ===> hi
代码语言:javascript
复制
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

实现的思路:

代码语言:javascript
复制
var a = '22'
a.padStart(len, str)

伪代码:

代码语言:javascript
复制
var res = ''
if (str.toString) {
    res = str.toString();
}
else {
    res = Object.prototype.toString.call(str);
}
return res;
代码语言:javascript
复制
res.repeat(len/2+1).slice(0, len - a.length) + a

padEnd() 和padStart参数一样,只是把想加的字符串加到后头。

代码语言:javascript
复制
var a = 'aaa'.padEnd(15, {});
// aaa[object Obje

兼容性

image
image

目前来看用于前端需要兼容,请看:string.polyfill.js

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档