zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Log4net.config
    ASCII 转换帮助类
    维吉尼亚加密与解密
    nginx配置说明
    验证码
    css 设置下拉菜单
    输出一张自定义文字的图片
    mvc 自定义分页控件
    【模块化】export与export default在一个文件里共存,引入时需注意的地方
    【uniapp】兼容刘海屏底部安全区
  • 原文地址:https://www.cnblogs.com/hongrunhui/p/9370954.html
Copyright © 2011-2022 走看看