Java字符串补零需手动计算补零数量并拼接,左补零在原串前加'0',右补零在原串后加'0';JDK≥11可用String.repeat(),JDK8需用StringBuilder循环或Apache Commons Lang的leftPad()。

Java 中字符串补零操作不依赖内置方法,需手动拼接或借助工具类。核心思路是计算需补充的零的数量,再用字符串拼接或 StringBuilder 构建新字符串。
左侧补零(左对齐,高位补零)
目标是让原字符串长度达到指定宽度,不足部分在左边补 '0'。例如 "123" 补到长度 6 → "000123"。
- 先获取原字符串长度 len 和目标长度 width
- 若 len >= width,直接返回原字符串(无需补)
- 否则创建 width - len 个 '0',拼在原字符串前面
常用写法:
String str = "123";
int width = 6;
String padded = String.format("%0" + width + "d", Integer.parseInt(str)); // 仅适用于纯数字字符串
// 更通用方式:
String padded = "0".repeat(Math.max(0, width - str.length())) + str;注意:使用 String.repeat() 要求 JDK ≥ 11;JDK 8 可用 StringUtils.leftPad(str, width, '0')(Apache Commons Lang)或 StringBuilder 循环追加。
立即学习“Java免费学习笔记(深入)”;
右侧补零(右对齐,低位补零)
在字符串末尾补零,例如 "123" 补到长度 6 → "123000"。
- 同样先判断长度是否已达目标
- 不足时,在原字符串后拼接对应数量的 '0'
简洁写法:
String padded = str + "0".repeat(Math.max(0, width - str.length()));
或用 StringBuilder 提升性能(尤其大量操作时):
StringBuilder sb = new StringBuilder(str);
sb.append("0".repeat(Math.max(0, width - str.length())));
String padded = sb.toString();兼容 JDK 8 的通用方法
若项目仍用 JDK 8,可封装一个工具方法:
public static String padLeft(String s, int width, char padChar) {
if (s == null) s = "";
int len = s.length();
if (len >= width) return s;
StringBuilder sb = new StringBuilder(width);
for (int i = 0; i < width - len; i++) {
sb.append(padChar);
}
sb.append(s);
return sb.toString();
}
<p>public static String padRight(String s, int width, char padChar) {
if (s == null) s = "";
int len = s.length();
if (len >= width) return s;
return s + String.join("", Collections.nCopies(width - len, String.valueOf(padChar)));
}调用示例:padLeft("45", 5, '0') → "00045";padRight("45", 5, '0') → "45000"。
避免常见陷阱
-
空字符串或 null 处理:直接调用
length()前务必判空,否则抛 NullPointerException - 负数或超长字符串:目标宽度小于原长度时,应直接返回原串,而非截断
-
非数字字符串慎用 format:
String.format("%06d", ...)仅适合整数,对 "abc" 会报错 - 性能考虑:高频补零场景优先用 StringBuilder 或预分配 char[],避免频繁字符串拼接
不复杂但容易忽略细节,按需选择合适方式即可。


















