Javaにおける左詰めゼロパディングのコード例
Javaにおける左詰めゼロパディングについて
問題: 整数に左側にゼロを埋め込んで、指定された桁数に揃えたい。
解決方法:
Javaでは、String.format()
メソッドを使用して、フォーマット指定子を利用することで、整数を左詰めゼロパディングすることができます。
フォーマット指定子:
%0Xd
:X
は桁数、d
は整数値を表します。0
はゼロパディングを指定します。X
は桁数を指定します。
例:
int number = 123;
// 5桁に左詰めゼロパディング
String paddedNumber = String.format("%05d", number);
System.out.println(paddedNumber); // 出力: 00123
解説:
String.format("%05d", number)
:%05d
: 5桁に左詰めゼロパディングするフォーマット指定子を指定します。number
: パディングする整数値を指定します。
System.out.println(paddedNumber)
:- パディングされた文字列を出力します。
- 桁数よりも整数値が大きい場合は、そのままの値が出力されます。
- 負の整数値の場合、マイナス記号が先頭に付きます。
DecimalFormat
クラスを使用することもできます。StringBuilder
クラスを使用して、手動でゼロを挿入することもできますが、String.format()
を使う方が簡潔です。
String.format()
メソッドを使用した例:
int number = 123;
// 5桁に左詰めゼロパディング
String paddedNumber = String.format("%05d", number);
System.out.println(paddedNumber); // 出力: 00123
DecimalFormat
クラスを使用した例:
import java.text.DecimalFormat;
int number = 123;
// 5桁に左詰めゼロパディング
DecimalFormat df = new DecimalFormat("00000");
String paddedNumber = df.format(number);
System.out.println(paddedNumber); // 出力: 00123
StringBuilder
クラスを使用した例:
int number = 123;
int desiredLength = 5;
StringBuilder sb = new StringBuilder(desiredLength);
for (int i = 0; i < desiredLength - String.valueOf(number).length(); i++) {
sb.append('0');
}
sb.append(number);
String paddedNumber = sb.toString();
System.out.println(paddedNumber); // 出力: 00123
これらのコードは、すべて同じ結果を出力します。それぞれの特徴は以下のとおりです。
String.format()
メソッド: シンプルで使いやすい。DecimalFormat
クラス: さまざまな数値フォーマットを指定できる。StringBuilder
クラス: 手動でゼロを挿入する必要があるが、柔軟性が高い。
StringUtils
クラス (Apache Commons Lang)
Apache Commons Langライブラリを使用すると、StringUtils
クラスのleftPad()
メソッドを使って、文字列を左側に特定の文字でパディングできます。
import org.apache.commons.lang3.StringUtils;
int number = 123;
String paddedNumber = StringUtils.leftPad(String.valueOf(number), 5, '0');
System.out.println(paddedNumber); // 出力: 00123
String.format()
メソッドのフォーマット指定子を使って、異なる文字でパディングすることもできます。
int number = 123;
String paddedNumber = String.format("%05X", number);
System.out.println(paddedNumber); // 出力: 0007B
この例では、16進数でパディングが行われます。
手動パディング
最も基本的な方法ですが、手動でゼロを挿入することもできます。
int number = 123;
int desiredLength = 5;
String paddedNumber = "0".repeat(desiredLength - String.valueOf(number).length()) + number;
System.out.println(paddedNumber); // 出力: 00123
選択の基準:
- シンプルさ:
String.format()
メソッドが最もシンプルです。 - 機能性:
StringUtils
クラスは、さまざまなパディングオプションを提供します。 - パフォーマンス: 通常、
String.format()
メソッドやStringUtils
クラスの方がパフォーマンスが優れています。 - ライブラリ依存:
StringUtils
クラスを使用するには、Apache Commons Langライブラリを依存関係に追加する必要があります。
java formatting zero-pad