web-dev-qa-db-ja.com

Java String Formatを使用して整数をフォーマットする

JavaのString.formatメソッドを使用して、ゼロに先行する整数を与えることが可能かどうか疑問に思っていますか?

例えば:

1は001になります
2は002になります
...
11は011になります
12は012になります
...
526は526のままです
...等

現時点では、次のコードを試しました。

String imageName = "_%3d" + "_%s";

for( int i = 0; i < 1000; i++ ){
    System.out.println( String.format( imageName, i, "foo" ) );
}

残念ながら、これは番号の前に3つの空のスペースがあります。代わりに数字の前にゼロを付けることは可能ですか?

115
My Head Hurts

整数の形式指定子で%03dを使用します。 0は、3桁(この場合)未満の場合、数値がゼロで埋められることを意味します。

他の修飾子については、 Formatter のドキュメントを参照してください。

163
Mat
String.format("%03d", 1); // => "001"
//              │││   └── print the number one
//              ││└────── ... as a decimal integer
//              │└─────── ... minimum of 3 characters wide
//              └──────── ... pad with zeroes instead of spaces

詳細については、 Java.util.Formatter を参照してください。

189
maerics

Apache commons-langと呼ばれるサードパーティのライブラリを使用している場合、次のソリューションが役立ちます。

ApacheのStringUtilsクラスを使用します commons-lang

int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"

StringUtils.leftPad()String.format()より速いため

10
Anil Bharadia