left-pad拼接指定字符

编语:最近热门话题木过于某人把自己的 Npm pkg 给 unpublish,导致一些依赖的大包都收到影响

正文:

首先:它是做什么的?

String left pad

在给定字符串前拼指定字符到指定长度

var leftpad = require('left-pad')

// => "  foo"

leftpad('foo', 5)

再看看这个包的源码:

module.exports = leftpad;

function leftpad (str, len, ch) {

str = String(str);

var i = -1;

ch || (ch = ' ');

len = len - str.length;

while (++i < len) {

str = ch + str;

}

return str;

}

来看看 baidu tangram 的类似的 pad 版本:

// 对目标数字进行 0 补齐

// 输出:00025

pad(25, 5)

// 1.5.1

function pad(source, length) {

var pre = "",

negative = (source < 0),

string = String(Math.abs(source));

if (string.length < length) {

pre = (new Array(length - string.length + 1)).join('0');

}

return (negative ?  "-" : "") + pre + string;

};

补 0 的 pad 方式:

function pad(val,len){

val = String(val);

len = len || 2;

while(val.length < len){

val = "0" + val;

}

return val;

}

比较简单的版本:

module.exports = function(str, width, char) {

char = char || '0';

str = str.toString();

while (str.length < width) str = char + str;

return str;

};

参考 tangram 那种数组方式的版本:

function leftpad(str, len, ch){

str = '' + str;

var padLen = len - str.length;

if(padLen <= 0){

return str;

}else{

return (new Array(padLen + 1)).join((''+ch) || ' ') + str;

}

}

月影的方案:

function leftpad(str, len, ch){

str = '' + str;

if(!ch && ch !== 0) ch = ' ';

 

var padlen = len - str.length;

if(padlen <= 0) return str;

 

var padch = padlen & 1 ? ch : '';

 

while(padlen >>= 1){

ch += ch;

if(padlen & 1){

padch += ch;

}

}

return padch + str;

}

一个热点其实里面还是有很多料的,比如:

  • 如何把参数转字符串
  • 如何使用数组这种神奇的类型

转自:DDFE

「五年博客,如果觉得我的文章对您有用,请帮助本站成长」

订阅周报 热门文章 关注微博