Javaで【String.format】メソッドを使用して、
数値をゼロ埋め(ゼロパディング)する方法を
解説していきます.
金融関係のシステムでは、
頻繁に設計されている仕様なので
覚えておくと良いでしょう。
ゼロ埋め以外にも、半角スペースなどで
埋める方法を解説していきます。
0埋めする桁数の確認
文字列から数値型に変換する場合、
まずは何桁埋めするかで
使う型が変わってきます。
整数型の値の範囲を超えた
数値型変換を実行すると
NumberFormatExceptionが発生します。
- short型:サイズは2バイト
- int型:サイズは4バイト
- long型:サイズは8バイト
符号なし整数型の値の範囲
【8ビット(1バイト)】
0~255
【16ビット(2バイト)】
0~65,535
【32ビット(4バイト)】
0~4,294,967,295
符号付き整数型の値の範囲
【8ビット(1バイト)】
-128~127
【16ビット(2バイト)】
-32,768~32,767、
【32ビット(4バイト)】
-2,147,483,648~2,147,483,647
10桁以上の数値変換をしたい場合は
long型を使います。
※2,147,483,647以上の値変換が不可なため
基本
String.format(形式文字列, 値);
例
String.format(“%016d”, -123456789012);
- %:書式文字列であることを表す指示子
- 0:埋める文字
- 16:桁数
- d:出力する値の型
- decimal型:%d
- boolean型:%b
- float型:%f
- String型:%s
- char型:%c
数値の0埋め
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
package com.example.demo; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PaddingLogic { public static void main(String[] args) { String minus = "^-"; String paddHeadZero15 = "%015d"; String paddHeadZero16 = "%016d"; String strNum = "-123456789012"; Pattern pattern = Pattern.compile(minus); Matcher mtch = pattern.matcher(strNum); String strPrint = null; if (mtch.find()) { //-の場合 System.out.println("正規表現にマッチしました。"); System.out.println(mtch.group()); System.out.println(strNum); //最大15桁まで0埋め strPrint = String.format(paddHeadZero15, Long.parseLong(strNum)); } else { System.out.println("正規表現にマッチしませんでした。"); System.out.println(strNum); //最大16桁まで0埋め strPrint = String.format(paddHeadZero16, Long.parseLong(strNum)); } System.out.println(strPrint); } } |
実行結果
|
正規表現にマッチしました。 - -123456789012 -00123456789012 |
SPONSORED LINK
数値を3桁ごとにカンマ区切り
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
package com.example.demo; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PaddingLogicZero { public static void main(String[] args) { String minus = "^-"; String commaDelimiterFomt = "%,d"; String strNum = "-123456789012"; Pattern pattern = Pattern.compile(minus); Matcher mtch = pattern.matcher(strNum); String strPrint = null; if (mtch.find()) { //-の場合 System.out.println("正規表現にマッチしました。"); System.out.println(mtch.group()); System.out.println(strNum); //最大15桁まで0埋め strPrint = String.format(commaDelimiterFomt, Long.parseLong(strNum)); } else { System.out.println("正規表現にマッチしませんでした。"); System.out.println(strNum); //最大16桁まで0埋め strPrint = String.format(commaDelimiterFomt, Long.parseLong(strNum)); } System.out.println(strPrint); } } |
実行結果
|
正規表現にマッチしました。 - -123456789012 -123,456,789,012 |
文字列の前方、後方の半角スペース埋め
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
package com.example.demo; public class PaddingLogicHalfSpace { public static void main(String[] args) { String paddFrontHalfSpace10 = "%10s"; String paddBackHalfSpace10 = "%-10s"; String str = "abcde"; System.out.println("実施前:半角スペース埋め(前方)"); System.out.println(makeValue(str)); System.out.println("実施後:半角スペース埋め(前方)"); System.out.println(makeValue(String.format(paddFrontHalfSpace10, str))); System.out.println("実施前:半角スペース埋め(後方)"); System.out.println(makeValue(str)); System.out.println("実施後:半角スペース埋め(後方)"); System.out.println(makeValue(String.format(paddBackHalfSpace10, str))); } private static String makeValue(String str) { StringBuilder sb = new StringBuilder(); sb.append("【"); sb.append(str); sb.append("】"); return sb.toString(); } } |
実行結果
|
実施前:半角スペース埋め(前方) 【abcde】 実施後:半角スペース埋め(前方) 【 abcde】 実施前:半角スペース埋め(後方) 【abcde】 実施後:半角スペース埋め(後方) 【abcde 】 |
SPONSORED LINK
parseIntとvalueOfの違い

parseIntの返却値の場合
int型やchar型などのプリミティブ型を返す。
valueOfの返却値の場合
Integerクラスを返す。
プリミティブ型は
インスタンス化ができないので
プリミティブ型.メソッド名()のように
メソッドを呼び出すことができません。
Integerクラスはint型のラッパークラスなので
メソッドを持っており、
インスタンス化することも可能です。
またプリミティブ型にない機能として
nullを代入することが出来ます。
int型では32bitのみの
メモリ確保であることに対し、
Integer型はメソッドを持つ分、
32bitよりも多くのメモリを使用します。
SPONSORED LINK
今の年収に満足していますか?
同じ契約金で業務委託していても
在籍している会社によって給料が違います。
今と同じスキル・業務内容でも
年収が変わるということです。
さらに以下を考慮すると
より年収アップにつながります。
- スキルセットと需要
- 経験と実績
- 業界や地域の市場価値
- 転職時の交渉スキル
転職先の企業の給与体系や
業界の標準的な給与水準を調査し、
転職前後の給与を比較することができます。
給与のみでなく、
福利厚生やキャリア成長の機会、
ワークライフバランスなどの要素も
総合的に考慮することが重要です。
こちらで転職・年収アップできました
【エントリーは簡単30秒!】
【ITエンジニア特化LP】転職エージェント
ITエンジニアの知識を効率よく身につけるには?
Kindle Unlimitedは、Amazonが提供する
月額定額制の電子書籍サービスを活用します。
また、Kindle Unlimitedには、
体験版が提供されています。
体験版では、一定期間(通常は30日間)に限り、
Kindle Unlimitedのサービスを
無料で利用することができます。
1.豊富な書籍のラインナップ
Kindle Unlimitedには、
幅広いジャンルの書籍が
数十万冊以上含まれています。
小説、ビジネス書、自己啓発書、
学術書、漫画など、
様々なテーマや興味に合わせて
多彩な選択肢があります。
2.サービスの内容を体験
体験版では、Kindle Unlimitedの
全ての機能を使いながら、
豊富な書籍のラインナップや
読書体験を体験することができます。
自身の読書の好みや
利用頻度に合うかどうかを確認できます。
3.解約が可能
体験版期間中に
Kindle Unlimitedのサービスに
満足しなかった場合、
期限内に解約することができます。
その場合、追加料金はかかりません。
ここで利用できました
【登録は簡単30秒!】
Kindle Unlimitedの無料体験を始める
Kindle Unlimitedでは
さまざまなジャンルの書籍が提供されています。
ITエンジニアとしてスキルを向上させたり
新しい技術を学んだりする際に、
Kindle Unlimitedは
便利な資源となるのでおすすめです。
SPONSORED LINK
この記事へのコメントはありません。