将前导零添加到字符串

我想在字符串中添加一些前导零,总长度必须为8个字符。 例如:

123应为00000123
1243应该是00001234
123456应该是00123456
12345678应该是12345678

什么是最简单的方法?

一个俗气的小技巧

String str = "123"; String formatted = ("00000000" + str).substring(str.length()) 

如果你开始使用数字代替:

 Int number = 123; String formatted = String.format("%08d", number); 

使用String.format() ,它已经有一个说明符:

 String.format("%08d", myInteger); 

更一般地说,请参阅Formatter的javadoc。 它有很多简洁的东西 – 比你第一眼看到的更多。

使用apache常见的langs lib:

 StringUtils.leftPad(str, 8, '0'); 

为什么不做一个简单的填充function? 我知道有库,但这是一个非常简单的任务。

 System.out.println(padStr(123, "0", 8)); System.out.println(padStr(1234, "0", 8)); System.out.println(padStr(123456, "0", 8)); System.out.println(padStr(12345678, "0", 8)); public String padStr(int val, String pad, int len) { String str = Integer.toString(val); while (str.length() < len) str = pad + str; return str; } 

使用DecimalFormat

 static public void main(String[] args) { int vals[] = {123, 1243, 123456, 12345678}; DecimalFormat decimalFormat = new DecimalFormat("00000000"); for (int val : vals) { System.out.println(decimalFormat.format(val)); } } 

输出:

 00000123 00001243 00123456 12345678 
 public static void main(String[] args) { String stringForTest = "123"; int requiredLengthAfterPadding = 8; int inputStringLengh = stringForTest.length(); int diff = requiredLengthAfterPadding - inputStringLengh; if (inputStringLengh < requiredLengthAfterPadding) { stringForTest = new String(new char[diff]).replace("\0", "0")+ stringForTest; } System.out.println(stringForTest); }