java整数或数字字符串位数不足前面或后面补零的方法,一般都是使用自定义简单封装、String.format、NumberFormat等都可以实现。(之前本地做的笔记,忘了原参考,感谢)
自定义简单封装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /** * 数字不足位数前后补0 * @param num 参与补零的数字 * @param len 最终位数长度 * @param prev 前或后,true前,false后 * @return */ public static String zeroFormat(Integer num, int len, boolean prev) { int l = num.toString().length(); StringBuffer sb = new StringBuffer(); if (!prev) sb.append(num); //后补 for ( int i= 0 ;i<len-l;i++) sb.append( "0" ); if (prev) sb.append(num); //前补 return sb.toString(); } |
1 2 3 4 5 6 7 | //前补0 String str1 = zeroFormat( 12 , 5 , true ); System.out.println(str1); //00012 //后补0 String str2 = zeroFormat( 12 , 5 , false ); System.out.println(str2); //12000 |
使用String.format
1 2 3 4 5 6 7 8 9 | //前补零 String str1 = String.format( "%05d" , 12 ); System.out.println(str1); //00012 //后补零 String num = "12" ; int len = 5 ; String str2 = num + String.format( "%0" +(len - num.length())+ "d" , 0 ); System.out.println(str2); //12000 |
使用Number、DecimalFormat
支持小数、负数、货币、百分比等等各种操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //前补零 String str1 = new DecimalFormat( "00000" ).format( 12 ); System.out.println(str1); //00012 String str2 = new DecimalFormat( "00000.000" ).format( 12.12 ); System.out.println(str2); //00012.120 NumberFormat formatter = NumberFormat.getNumberInstance(); formatter.setGroupingUsed( false ); //不分组 formatter.setMinimumIntegerDigits( 5 ); //整数部分中所允许的最小数字位数 //formatter.setMinimumFractionDigits(3);//小数部分中所允许的最小数字位数 String str3 = formatter.format( 12 ); System.out.println(str3); //00012 //后面补零 Integer num = 12 ; int len = 5 ; int l = len - num.toString().length(); DecimalFormat df = new DecimalFormat(); df.setGroupingUsed( false ); df.setMinimumIntegerDigits(len); if (l> 0 ) df.setMultiplier(( int )Math.pow( 10 ,l)); System.out.println(df.format(num)); //12000 |