21

文字列に先行ゼロをいくつか追加したいのですが、合計の長さは 8 文字である必要があります。例えば:

123 は 00000123 である必要があります
1243 は 00001234 である必要があります
123456 は 00123456 である必要があります
12345678 は 12345678 である必要があります

最も簡単な方法は何ですか?

4

6 に答える 6

10

Apache Common langs lib の使用:

StringUtils.leftPad(str, 8, '0');
于 2016-10-17T14:35:46.243 に答える
7

使用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
于 2016-03-09T23:08:15.243 に答える
4

簡単なパディング関数を作ってみませんか? ライブラリがあることは知っていますが、これは非常に単純な作業です。

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;
}
于 2013-06-13T23:56:23.380 に答える
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);
}
于 2014-07-24T10:36:31.820 に答える