在Java中实现字符串位数补齐主要有以下几种常用方法,可根据不同场景选择使用:
一、使用String.format()方法
1. 左补齐(右侧补空格)
String result = String.format("%10s", "hello"); // 总长度10,左侧补空格:ml-citation{ref="5" data="citationList"}
2. 右对齐(左侧补零)
String str = String.format("%06d", 12345); // 输出"012345":ml-citation{ref="5,7" data="citationList"}
3. 自定义补位字符
通过替换空格实现其他字符补齐:
String res = String.format("%5s", "gr").replace(' ', '1'); // 输出"111gr":ml-citation{ref="4" data="citationList"}
二、Apache Commons Lang库方法
使用StringUtils.leftPad()实现左补齐:
String value = StringUtils.leftPad("3123123", 10, "0"); // 输出"0003123123":ml-citation{ref="4" data="citationList"}
三、Java 11+的String.repeat()方法
适用于已知需要补足的具体字符数:
String padding = " ".repeat(16 - originalStr.length());
String result = originalStr + padding; // 右补空格至16位:ml-citation{ref="3" data="citationList"}
四、循环遍历实现
通过StringBuilder动态构建补位字符串:
public static String padString(String input, char padChar, int length) {StringBuilder result = new StringBuilder(input);while (result.length() < length) {result.insert(0, padChar); // 左补指定字符:ml-citation{ref="1" data="citationList"}}return result.toString();
}
五、NumberFormat数字格式化
适用于数字类型补零:
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumIntegerDigits(6); // 设置最小整数位数
String formatted = nf.format(123); // 输出"000123":ml-citation{ref="5" data="citationList"}
选择建议
- 原生推荐:优先使用String.format(),代码简洁且性能较好57
- 第三方库场景:若项目中已引入Apache Commons Lang,推荐StringUtils.leftPad()4
- 超长补位需求:Java 11+的repeat()方法更高效3
- 历史兼容性:低版本Java可使用循环遍历实现12