JavaScript 实现 padLeft 与 padRight 自动补位扩展方法

作者:异步漫步

时间:2026-10-23

浏览:600

本文介绍在 JavaScript 中实现字符串长度不足时自动补位的 padLeft 和 padRight 方法。通过扩展 String 原型,提供多种实现方案,包括基于 Array.join 的高效方式以及循环拼接方式,并对比其性能差异与适用场景。

文章目录

JavaScript 字符串补位方法概述

第一种方法是自定义函数实现,这种方式虽然直观,但在实际调用时不够便捷。

自定义函数实现补位


function FillZero(p) {
return new Array(3 - (p + '').length + 1).join('0') + p;
}
FillZero(6); //输出006

第二种方法是通过扩展 String 原型来实现,参考 C# 语言中的 PadLeft 和 PadRight 方法。

扩展 String 原型实现 PadLeft 和 PadRight


String.prototype.PadLeft = function (len, charStr) {
var s = this + '';
return new Array(len - s.length + 1).join(charStr || '') + s;
}
String.prototype.PadRight = function (len, charStr) {
var s = this + '';
return s + new Array(len - s.length + 1).join(charStr || '');
}
var p = 6;
p.toString().PadLeft(3, '0'); //输出006
p.toString().PadRight(3, '0'); //输出600

第三种方法的原理与第二种方法类似,但提供了更灵活的参数支持。

更灵活的补位原型方法


<script type="text/javascript">
String.prototype.pad= function (pos,len,padStr) {
 var padStrs = new Array(len).join(padStr,'');
 return pos ? (padStrs + this.toString()).substr(0-len):(this.toString() + padStrs).substr(0,len);
}
String.prototype.lpad = function(len,padStr){
	return this.pad(1,len,padStr);
}
String.prototype.rpad = function(len,padStr){
	return this.pad(0,len,padStr);
}
String.prototype.padLeft = String.prototype.lpad;
String.prototype.padRight = String.prototype.rpad;
var str="6";
console.log(str.lpad(2,"0"));
console.log(str.padLeft(2,"0"));
</script>

第四种代码实现展示了另一种补位逻辑。

基于循环的补位实现


String.prototype.padLeft = function (padChar, width) {
 var ret = this;
 while (ret.length < width) {
  if (ret.length + padChar.length < width) {
   ret = padChar + ret;
  }
  else {
   ret = padChar.substring(0, width - ret.length) + ret;
  }
 }
 return ret;
};

String.prototype.padRight = function (padChar, width) {
 var ret = this;
 while (ret.length < width) {
  if (ret.length + padChar.length < width) {
   ret += padChar;
  }
  else {
   ret += padChar.substring(0, width - ret.length);
  }
 }
 return ret;
};

以下是其他网友提供的补充内容。

关于 JavaScript 的 leftpad 方法。

这一讨论源于微博上关于 leftpad 方法被吐槽的事件。

原始方法通过循环逐个拼接字符串,因此效率较低,会产生大量的字符串对象,导致垃圾回收变慢。

其大致逻辑如下:

for(i=0;i<cnt;i++){

str=pad+str;

}

改进后的实现思路如下:

leftpad 方法性能优化与缓存策略


//cache
var padding1="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
var padding2="                         ";
 function leftpad(str,length,useSpace){
 var padding = padding1;
 if(useSpace){
 padding = padding2;
 }
 
 
 var cnt = length-str.length;
 
 if(cnt<=0) return str;
 if(cnt<=200) return padding.substring(0,cnt)+str;
 
 
 str=padding+str; 
 return leftpad(str,length,ch); 
 }

主要思路包括:

1. 减少字符串对象的生成,从而尽量减少字符串拼接的次数。

2. 降低算法的时间复杂度。

以上就是 JavaScript 中位数不足自动补位扩展 padLeft、padRight 实现代码的详细内容,更多关于 JavaScript 自动补位 padLeft、padRight 的资料请关注本站其它相关文章!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章