支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


String.formatを学ぶ

はじめに

Java言語の便利なメソッドのString.formatを利用した事はあるでしょうか?Stringと言えばJavaでは当たり前の、文字列操作に関する処理を実施する為のメソッドが色々と用意されています。 今回はその中でも、毎回当たり前のようには使いませんが、時と場合によってとても便利に簡単に利用できるString.formatを解説していきます。

String.formatとは

そもそもString.formatはどういうメソッドかはご存知でしょうか?簡単に言えば特定の文字列を定型化する事がメインの機能なのですが、どのような時に利用するのか例を一つ上げてみましょう。

文字列操作例文

例えば、文章を出力する際に一番シンプルに行うのであれば
String strOutput = "test";
"出力結果は" + strOutput + "です。";
この場合の結果は【出力結果はtestです。】となります。

初心者向けの構成であれば上記のような記述でも問題無いのですが、実際に現場でコーディングをする場合、可読性などを踏まえると上記は決して正解とは言えないでしょう。

そのようなときにString.formatを利用すると以下のようになります。
String strOutput = "test";
String.format("出力結果は%sです。", strOutput);
この場合の結果も【出力結果はtestです。】となります。

このようにString.formatを利用する事で可読性はもちろん、拡張性も担保でき、一段階上のコーディングが行えるようになります。

String.formatの使い方

では、肝心のString.formatの使い方を見てみましょう。上記の例では文字列を取り扱う為、文字列型を表す%sを利用していますが、それ以外にも以下のような様々な型があります。

  • s → 文字列
  • b → Boolean型
  • d → 10進整数
  • x → 16進整数
  • f → 浮動小数点
  • n → 行区切り文字
  • t → 日付/時刻
上記以外にもまだ色々とありますが、恐らくよく使うのは上記辺りではないでしょうか。

使い方は先程の例文でもご覧頂いたように【String.format(文字列, 値);】となり、第1引数の文字列内に【%型】を入力し、第2引数に【%型】に代入させたい文字列や真偽値などの値を入力します。

日付型例文

基本的な使い方は以上となりますが、それ以外のパターンもあります。例えば日付型の場合を見てみましょう。

先述した型では【t】が日付型であると記載しています。しかし、この【t】はあくまで日付型であるという接頭辞であり、実際に利用する場合には具体的な日付の型を指定する必要があります。 では、ここでまた例を見てみましょう。
Date date = new Date();
String.format("今日は%tY年%tm月%td日です。",date, date, date);
この場合の結果は【今日は2020年01月01日です。】となります。

具体的な日付の型は以下のようなものがあります。

  • Y → 年。必要に応じて 0 を先頭に追加し、4 桁以上で表現します。
  • y → 年の下 2 桁。必要に応じて 0 を先頭に追加します (00 - 99)。
  • m → 月。必要に応じて 0 を先頭に追加し、2 桁で表現します (01 - 13)。
  • d → 月の何日目かを表す日。必要に応じて 0 を先頭に追加し、2 桁で表現します (01 - 31)。
  • e → 月の何日目かを表す日。最大 2 桁で表現します (1 - 31)。
  • ※大文字の「M」は時間のミニッツを表す為、注意が必要です。
日付型を利用する場合には、上記のように日付の何を表したいかを別途指定する事が必要ですので、使用方法に注意しましょう。

0埋め例文

また、少し特殊な使い方ではありますが、よく利用されるパターンとして数字の0埋めが使われます。例えば元々4桁の数字があったとして、何らかの理由で12桁に統一する必要があった場合には以下のように記述します。
int hoge = 9999;
String.format("%012d" , hoge);
この場合の結果は【000000009999】になります。但し、int型ではなくString型になる点に注意してください。

さいごに

今回の記事ではString.formatに関して解説してきましたが、いかがでしたでしょうか。利用する頻度はそこまで高くないかも知れませんが、覚えておいて損はありません。
また、定型化する事に特化しているため、同じような文字列を含む変数を多数利用する場合に定型化する事で、ソースの可読性や拡張性は格段に向上できるでしょう。 また、文字列以外にもBoolean型や日付形式、整数型などほとんどの型に対応しているため、利便性にも優れているでしょう。
初心者のコーディングから一歩抜け出す為にも、是非可読性を念頭において利用すべきタイミングが来たら是非挑戦してみてください。