JavaScript 实现 padLeft 与 padRight 自动补位扩展方法
本文介绍在 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 的资料请关注本站其它相关文章!
D3.js 比例尺与坐标轴的配置详解
2026-11-05 16:54:46
JavaScript怎么遍历对象的Symbol键和不可枚举属性
2026-11-05 13:13:39
封装一个健壮的JS字符串判空工具函数
2026-11-05 12:16:14
JavaScript合并数组的三种常用方法:concat、扩展运算符与push
2026-11-05 11:22:29
JavaScript立即执行函数(IIFE)是什么及基本语法
2026-11-05 10:51:19
