java中string.format补零需用"%0nd"格式右对齐补零,如"%05d"将42转为"00042";字符串补零需先空格对齐再replace(' ','0'),如"%8s".replace(' ','0')实现左补零。

Java 中用 String.format 补零或补齐字符串长度,核心是掌握格式化占位符的写法,尤其是数字补零和字符串左/右对齐的控制。
数字补零(右对齐,前面补0)
适用于整数、长整型等数值类型转为固定位数字符串,比如生成订单号、编号等。
-
"%05d":表示至少 5 位,不足时前面补 0,右对齐。例如:String.format("%05d", 42)→"00042" -
"%08d":8 位补零,String.format("%08d", 123)→"00000123" - 注意:
d是十进制整数标识符,不能用于字符串;若传入 String 会抛IllegalFormatConversionException
字符串左/右补齐(非数字也适用)
对任意字符串补空格或自定义字符(需配合 StringUtils 等工具类),String.format 原生只支持补空格,但可间接实现补零效果。
- 右对齐补空格:
"%-10s"→ 左对齐、10 字符宽;"%10s"→ 右对齐、10 字符宽(默认) - 想补零?可先用空格补齐,再把空格替换成 '0':
String.format("%10s", "abc").replace(' ', '0')→"0000000abc" - 左补零到 8 位:
String.format("%8s", "xyz").replace(' ', '0')→"00000xyz"
处理负数和带符号数字
补零时负号占一位,0 从符号后开始补。
-
String.format("%06d", -42)→"-00042"(总长 6,负号 + 5 位,其中 4 个 0) - 如需去掉负号参与计数,建议先取绝对值再格式化,自行拼接符号
更灵活的补零方案(推荐组合用法)
单纯靠 String.format 补零有局限(比如不能直接指定补 '0' 到字符串),实际开发中常搭配其他方法:
- 字符串补零(左补):
String.format("%" + totalLength + "s", str).replace(' ', '0') - 字符串右补零:
String.format("%-" + totalLength + "s", str).replace(' ', '0') - 注意:当
str.length() >= totalLength时,replace不生效,原字符串不变,符合预期
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











