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


    背景:

    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
    

    兼容性

    image

    目前来看用于前端需要兼容,请看: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

  • 相关阅读:
    人脸开锁
    xtrabackup 8.0如何恢复单表
    这样配置,让你的VS Code好用到飞起!
    sqlserver安装教程(sql server2019安装详细步骤)
    史上最全vscode配置使用教程
    CxSAST 安装教程
    AppScan下载、安装、使用教程
    查看mysql数据库表结构注释信息
    从外包增删改查到大厂技术专家,我做对了什么?
    C内存操作API的实现原理
  • 原文地址:https://www.cnblogs.com/hongrunhui/p/9370954.html
Copyright © 2020-2023  润新知