Java文字列フォーマットを使用して整数をフォーマットする


129

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

例えば:

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

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

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

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

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


回答:


172

%03d整数のフォーマット指定子で使用します。0それはより少ない3(この場合)の数字よりもあれば数がゼロ充填されることを意味します。

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


211
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、を参照してください。


13

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

StringUtilsApache commons-langのクラスを使用:

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

StringUtils.leftPad()より速いですString.format()


StringUtils.leftPadは別の優れた選択肢であり、より読みやすく、他の文字を埋め込むことができると主張できます。私は周りにグーグルを持っていますが、それがより速いことを確認するものを見つけることができません-そのためのいくつかの証拠を提供できますか?
2013

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.