padStart 和 padEnd 用于字符串左右补全至指定长度,返回新字符串;padStart 左补(如 "9".padStart(2,"0")→"09"),padEnd 右补(如 "[INFO]".padEnd(12)→"[INFO] ");均支持 Unicode、需注意兼容性及 padString 处理规则。

字符串的 padStart 和 padEnd 方法用于在原字符串左侧或右侧补足指定字符,直到达到目标长度,常用于格式化输出、对齐显示或补零等场景。
padStart:从左边填充字符
语法为 str.padStart(targetLength, padString)。若原字符串长度已大于等于目标长度,则直接返回原字符串;否则在左侧重复拼接 padString(不足时截断),直至总长达标。
- 常见用途:时间/日期补零(如
"9".padStart(2, "0")→"09")、编号对齐("5".padStart(4, "0")→"0005") -
padString可为任意字符串,默认为空格;若为空,不填充;若过长,只取前面部分 - 注意:中文字符、emoji 等 Unicode 字符也按单个字符计数,但某些组合字符可能因编码方式影响长度判断
padEnd:从右边填充字符
语法与 padStart 类似:str.padEnd(targetLength, padString),区别仅在于填充方向。适用于右对齐文本、生成固定宽度日志、拼接带分隔符的字段等。
- 例如日志打印:
`[INFO]`.padEnd(12) + "User logged in"` → <code>"[INFO] User logged in" - 与
padStart一样,不修改原字符串,返回新字符串 - 当
padString为空或undefined,实际填充空格;传入null会转为字符串"null"
实用技巧与注意事项
两者都属于 ES2017 新增方法,现代浏览器和 Node.js 8+ 均支持。若需兼容旧环境,可用 polyfill 或手动实现。
- 避免误用长度单位:
targetLength是字符数,不是字节数,中文、emoji 各算 1 - 填充字符串不能为
undefined,否则报错;推荐显式传空格或自定义字符 - 结合解构或模板字符串使用更简洁,比如:
`${hours.toString().padStart(2, '0')}:${minutes.padStart(2, '0')}`
替代方案与兼容性处理
在不支持的环境中,可用函数模拟:
function padStart(str, len, ch = ' ') { return str.length >= len ? str : (ch.repeat(len)).slice(0, len - str.length) + str; }
- Lodash 提供
_.padStart和_.padEnd,功能更丰富(如支持居中填充) - 简单项目中,一行三元表达式也能应付多数补零需求:
("0" + n).slice(-2) - 注意:
repeat方法也有兼容性要求,必要时一并 polyfill
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











