将前导零添加到字符串

时间:2013-06-13 22:34:32

标签: java string

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

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

最简单的方法是什么?

6 个答案:

答案 0 :(得分:30)

一个俗气的小技巧

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

如果你开始使用数字:

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

答案 1 :(得分:27)

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

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

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

答案 2 :(得分:6)

使用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

答案 3 :(得分:6)

使用apache common langs lib:

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

答案 4 :(得分:5)

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

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;
}

答案 5 :(得分:1)

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);
}