业务场景: 我们在做一个单号字段设计的时候,经常需要用到这种格式,比如no2023062800001,no2023062800002,no2023062800003,单号累计递增,前缀是指定的字符串+当前日期+数字五位,不满五位左边补0
方式一:String.format
%06d的定义:
0代表前面要补的字符
6代表字符串长度
d表示参数为整数类型
//左边加0String 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 type1-左补02-右补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){// 左补0sb.append("0").append(str);}else if(type==2){//右补0sb.append(str).append("0");}str = sb.toString();strLen = str.length();}}return str;}//打印 System.out.println(addZeroForStr("12345",6,1)); //结果0123456