java 对数字补零的方法

597 阅读1分钟

有时候像自定义id,需要在数字前进行补0,下面介绍一下补零的方法

1.通过 String.format 方式来进行左位补零操作

1为 int 类型、0代表前面要补位的字符、2代表字符串的长度、d表示参数为整数类型

第1种情况

String str1 = String.format("%02d", 1);
System.out.println(str1);

控制台输出
01

第2种情况: 如果目标长度大于指定转换长度

String str2 = String.format("%02d", 123);
System.out.println(str2);

控制台输出
123

2.使用 java.text包下的NumberFormat 方式来进行左位补零操作(不推荐)

第1种情况

// 首先通过 getInstance 创建一个 NumberFormat 实例
NumberFormat numberFormat = NumberFormat.getInstance();
// 设置最大和最小整数位数
numberFormat.setMaximumIntegerDigits(2);
numberFormat.setMinimumIntegerDigits(2);
// 最后通过 format 方法操作要补零的数字即可
System.out.println(numberFormat.format(2));

控制台输出
02

第2种情况,得到的结果可能不符合场景预期

// 首先通过 getInstance 创建一个 NumberFormat 实例
NumberFormat numberFormat = NumberFormat.getInstance();
// 设置最大和最小整数位数
numberFormat.setMaximumIntegerDigits(2);
numberFormat.setMinimumIntegerDigits(2);
// 最后通过 format 方法操作要补零的数字即可
System.out.println(numberFormat.format(123));

控制台输出
23

3.造轮子,循环处理

int num = 6; // 需要补零的数字
int len = 2; // 补零之后数字的总长度
StringBuilder sb = new StringBuilder();
sb.append(num);
int temp = len - sb.length();
if (temp > 0)
	while (sb.length() < len)   //若长度不足进行补零
		sb.insert(0, "0");  // 每次都在最前面补零
System.out.println(sb);

4.使用guava Strings类方法(推荐使用)

首先需要 pom引入guava依赖

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>30.0-jre</version>
        </dependency>
String a = "1";
        char b = '0';

        String s = Strings.padStart(a, 3, b);
        System.out.println(s);

控制台输出
001

第二种情况 如果目标长度大于指定的转换长度

String a = "123456";
        char b = '0';

        String s = Strings.padStart(a, 3, b);
        System.out.println(s);

控制台输出
123456

以下是源码,和方式3原理一样

image.png

Strings里还有padEnd方法,在字符串后面追加字符

image.png