业务场景: 我们在做一个单号字段设计的时候,经常需要用到这种格式,比如no2023062800001,no2023062800002,no2023062800003,单号累计递增,前缀是指定的字符串+当前日期+数字五位,不满五位左边补0
方式一:String.format
%06d的定义:
0代表前面要补的字符
6代表字符串长度文章来源:https://www.toymoban.com/news/detail-649147.html
d表示参数为整数类型文章来源地址https://www.toymoban.com/news/detail-649147.html
//左边加0
String str = String.format("%06d", 12345);
System.out.println(str); // 012345
//右加空格
String addspace1 = "asd";
String addspace2 = String.format("%-12s", addspace1);
System.out.println("加空格 start:"+addspace2+":end"); //加空格 start:asd :end
//左加空格
String addspace2_1 = "asd";
String addspace2_2 = String.format("%12s", addspace2_1);
System.out.println("加空格 start:"+addspace2_2+":end"); //加空格 start: asd:end
方式二:NumberFormat.getInstance()
//左边加0(1)
int i = 12345;
// 得到一个NumberFormat的实例
NumberFormat nf = NumberFormat.getInstance();
// 设置是否使用分组
nf.setGroupingUsed(false);
// 设置最小整数位数
nf.setMinimumIntegerDigits(6);
System.out.println("左加0 start:"+nf.format(i)+":end");
//左加0 start:012345:end
方式三: StringUtils.leftPad
System.out.println(StringUtils.rightPad("123",6,"0")); //123000
System.out.println(StringUtils.leftPad("123",6,"0")); //000123
方式四: 自定义方法 append拼接
/**
* 给字符串的左补0或右补0
* @param str 要处理的字符串
* @param length 补0后字符串总长度
* @param type 1-左补0 2-右补0
* @return
*/
public static String addZeroForStr(String str, int length,int type) {
int strLen = str.length();
if (strLen < length) {
while (strLen < length) {
StringBuffer sb = new StringBuffer();
if(type==1){
// 左补0
sb.append("0").append(str);
}else if(type==2){
//右补0
sb.append(str).append("0");
}
str = sb.toString();
strLen = str.length();
}
}
return str;
}
//打印
System.out.println(addZeroForStr("12345",6,1));
//结果
0123456
到了这里,关于【业务功能篇34】Java 字符串数字 左右补全0的几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!