バックエンド

【Java】String.formatを使ってみよう!【基本から0埋め・カンマ区切り・進数変換まで!】

how-to-string-format

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

今回はこのような質問をいただきました。

String.formatの使い方を教えて!

String.formatは0埋めをするときやカンマ区切りにするときなど、結構使えるんですよね。

そこで今回はこちらの質問について解説していきます!

String.formatって何?

C言語のように%dや%sで数値や文字列を生成します。

少し可読性が低いような気がしますが、場面によってはかなり役立ちます。

0埋めをするときやカンマ区切りにするときなどに利用することが多いです。

数値を8進数や16進数にするのにも使えます。

こちらの記事で実際に使っています!

String.formatを使ってみよう!

では実際にString.formatを使ってみましょう!

基本的な使い方

基本的には%○の○に何かしらの文字を入れる感じですね。

○に入る文字は挿入する型によって変化します。

今回は文字、文字列、数値、真偽値、浮動小数点、日付を扱ってみます。

// 文字列(%s)
System.out.println(String.format("%sの記事と同じ%sです。", "前回", "例文"));

// 数値(%d)と文字(%c)
System.out.println(String.format("身長が%dcm〜%dcmの人には%cがオススメ", 145, 155, 'S'));

// 文字列(%s)としても扱える
System.out.println(String.format("身長が%scm〜%scmの人には%sがオススメ", 145, 155, "S"));

// 真偽値
System.out.println(String.format("%bと%b", true, false));

// 浮動小数点(%f)
System.out.println(String.format("floatはこんな感じ%f", 1.2345678));

// 日付(%tX) Xにはフォーマットによって違う文字が入る 今回はyyyy-MM-dd
System.out.println(String.format("%tF", new Date()));
前回の記事と同じ例文です。
身長が145cm〜155cmの人にはSがオススメ
身長が145cm〜155cmの人にはSがオススメ
trueとfalse
floatはこんな感じ1.234568
2019-10-23

0埋め

0埋めしてみます。

0だけでなくスペースで埋めることも可能です。

// 0埋め(3文字)
System.out.println(String.format("%03d", 1));
// スペース埋め(3文字)
System.out.println(String.format("%3d", 0));
// 0埋め(5文字)
System.out.println(String.format("%05d", 1));
// スペース埋め(5文字)
System.out.println(String.format("%5d", 0));
001
  0
00001
    0

カンマ区切り

数値に対して3文字区切りでカンマを追加します。

値段を扱う際には便利ですね。

// 3文字区切りでカンマを入れる
System.out.println(String.format("%,d", 1000000000));
1,000,000,000

進数変換

あまり使う機会はないと思いますが進数変換もできます。

10進数を8進数、16進数に変換します。

int num = 10;
// 10進数(%d)
System.out.println(String.format("10進数で表示すると%d", num));
// 8進数(%o)
System.out.println(String.format("8進数で表示すると%o", num));
// 16進数(%x, 小文字)
System.out.println(String.format("16進数で表示すると%x", num));
// 16進数(%X, 大文字)
System.out.println(String.format("16進数で表示すると%X", num));
10進数で表示すると10
8進数で表示すると12
16進数で表示するとa
16進数で表示するとA

まとめ

基本的な使い方はこんな感じ。

// 文字列(%s)
System.out.println(String.format("%sの記事と同じ%sです。", "前回", "例文"));

// 数値(%d)と文字(%c)
System.out.println(String.format("身長が%dcm〜%dcmの人には%cがオススメ", 145, 155, 'S'));

// 文字列(%s)としても扱える
System.out.println(String.format("身長が%scm〜%scmの人には%sがオススメ", 145, 155, "S"));

// 真偽値
System.out.println(String.format("%bと%b", true, false));

// 浮動小数点(%f)
System.out.println(String.format("floatはこんな感じ%f", 1.2345678));

// 日付(%tX) Xにはフォーマットによって違う文字が入る 今回はyyyy-MM-dd
System.out.println(String.format("%tF", new Date()));

他にも0埋め・カンマ区切り・進数変換までできてしまいます。

地味ながら活躍してくれそう!

あとがき

String.formatはあまり使う場面はないですが、知っておくと便利なものが多いですね!

0埋めやカンマ区切りは覚えておくと良さそうです。

しばらく使わないと忘れてしまいそうです(笑)