有时候像自定义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原理一样
Strings里还有padEnd方法,在字符串后面追加字符