java字符串数字补齐位数

在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