将前导零添加到字符串

use*_*743 16 java string

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

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

什么是最简单的方法?

Jea*_*rin 30

一个俗气的小技巧

String str = "123";
String formatted = ("00000000" + str).substring(str.length())
Run Code Online (Sandbox Code Playgroud)

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

Int number = 123;
String formatted = String.format("%08d", number);
Run Code Online (Sandbox Code Playgroud)

  • 对于许多不同的语言来说,这个俗气的小技巧值得记住 - 例如你不经常使用的sql方言 (2认同)

fge*_*fge 27

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

String.format("%08d", myInteger);
Run Code Online (Sandbox Code Playgroud)

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


And*_*rul 7

使用apache常见的langs lib:

StringUtils.leftPad(str, 8, '0');
Run Code Online (Sandbox Code Playgroud)


ROM*_*eer 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));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

00000123
00001243
00123456
12345678
Run Code Online (Sandbox Code Playgroud)


Mr.*_*irl 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 这将在循环的每次迭代中生成一个新的StringBuilder和一个新的String。 (2认同)