java补充0 java数字左侧补零补0 NumberFormat实现数字左侧补0
一、提出需求
1、在做一个编号生成规则中,有个规则如下: 编码序号为 5 位数,不足部分左侧补0。
二、代码实现
1、使用 java.text.NumberFormat 实现
/**
* description: 格式化数字,实现左侧补 0.
* @param num 格式化的数字
* @param min 最小位数
* @param max 最大位数
* @return String
* @version v1.0
* @author w
* @date 2019年7月19日 下午2:08:31
*/
public String fill(int num , int min , int max) {
NumberFormat numberFormat = NumberFormat.getInstance();
// 禁用数字格式化分组。 如: 000,001
numberFormat.setGroupingUsed(false);
// 保留最小位数
numberFormat.setMinimumIntegerDigits(min);
// 保留最大位数
numberFormat.setMaximumIntegerDigits(max);
return numberFormat.format(num);
}
2、使用 String.format 实现
/**
* description: 使用 String.format 格式化数字,实现左侧补 0
* @param num 需要格式化的数字
* @param digit 生成字符串长度(保留数字位数)
* @return String
* @version v1.0
* @author w
* @date 2019年7月19日 下午2:14:31
*/
public String fillString(int num , int digit) {
/**
* 0:表示前面补0
* digit:表示保留数字位数
* d:表示参数为正数类型
*/
return String.format("%0"+digit+"d", num);
}
三、测试
1、 测试 NumberFormat 实现 左侧补 0
@Test
public void testOne() {
/**
* 需求: 编码序号为 5 位数,不足部分左侧补 0
* 即: max = min =5
*/
String fill = fill(2, 5, 5);
System.out.println(fill);
fill = fill(233, 5, 5);
System.out.println(fill);
}
2、结果如下:
00002
00233
符合条件,达到预期结果!
3、 测试 String.format 实现左侧补0
@Test
public void testTwo() {
String fillString = fillString(1 , 5);
System.out.println(fillString);
fillString = fillString(110 , 5);
System.out.println(fillString);
}
4、结果如下:
00001
00110
符合条件,达到预期结果!
四、总结
1、NumberFormat 可以实现数字补0,同时支持设置 最大、最小位数,对数字处理更灵活。
2、String.format 可以实现数字补0,但不仅仅限于补0,也可以填充其他的数字、或者字符,对字符处理更灵活。
3、只要能实现需求就好,不必纠结那个好!