【C#入門】String.Formatで書式指定子の使い方(0埋め、桁数指定など)

String.Formatメソッドって使ってますか?

String.Formatメソッドで書式を指定することで、指定した書式で出力表示することができます。書式が指定できるので、出力結果が読みやすくなります。

この記事では、String.Formatメソッドについて

  • String.Formatメソッドとは
  • 書式指定子とは
  • カスタム書式指定子とは
  • 0埋めで表示する方法
  • 小数点以下の桁数を指定する方法
  • 3桁区切りで表示する方法
  • ¥マークを付ける方法
  • %表示する方法
  • 複数の文字列を連結する方法

など基本的な内容から、具体的な使い方の内容についても解説していきます。

今回はString.Formatメソッドについて、使い方をわかりやすく解説します!

目次

String.Format メソッド とは

String.FormatメソッドはStringクラスメソッドの1つで、第1引数に指定した書式で第2引数以降のオブジェクトを変換して出力表示します

String.Format("書式", オブジェクト0, オブジェクト1, ・・・);

書式内ではオブジェクト「{ }」(中カッコ)とインデックス番号を使って記述します。

{index[,alignment][:formatString]}

これを複合書式指定と呼びます。

「[ ]」内は省略可能です。

indexは第2引数以降のオブジェクトのインデックス番号を指定します。alignmentでは、書式設定フィールドの幅を指定します。

正の値であれば右揃え、負の値であれば左揃えで出力されます。指定した値の桁数、文字数で出力されます。

formatStringでは、書式指定子を指定します。書式指定子については後ほど解説します。

例:

String.Format("{0, -5:G}, {1:G3}, {2:N1}", 10, 12345, 12.345);

中カッコ{ }のエスケープ

複合書式指定には「{ }」(中カッコ)を使うとお伝えしました。

では書式内で文字として「{ }」(中カッコ)を使いたい場合はどのようにしたらよいのでしょうか?

その場合は中カッコを続けて記述します。

例:

String.Format("{{{0}}}", 10);

書式指定子とは

それでは、書式指定子について表にまとめてみました。

指定子説明
G一般(General)
N数値(Number)
F固定小数点数(Fixed-point)
E指数(Exponential)
Pパーセント(Percent)
D10進数(Decimal)
X16進数の大文字(Hexadecimal)
x16進数の小文字(Hexadecimal)
C通貨(Currency)

カスタム書式指定子とは

カスタム書式指定子を使うと数値を0埋めで出力したり、3桁で区切ることができます。

これも表にまとめてみました。

指定子呼び名説明
0ゼロプレースホルダ0埋めで出力
#桁プレースホルダ桁数の指定
,桁区切り記号3桁区切り
.小数点小数点以下の桁数を指定
%パーセントパーセント表示
;セクション区切り記号書式を複数指定する場合に区切りで使用

0埋めで表示する方法

0埋めで表示する方法についてサンプルコードで確認しましょう。

0埋めしたい桁数分だけ0を並べます。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      int num = 10;
      Console.WriteLine(String.Format("{0:00000}", num));
      
      Console.ReadKey();
    }
  }
}

実行結果:

00010

小数点以下の桁数を指定する方法

小数点以下の桁数を指定する方法についてサンプルコードで確認しましょう。

表示したい桁数分だけ#を並べます。

小数点以下の場合、指定した桁数より以下は四捨五入されます。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      double num = 12.345;
      Console.WriteLine(String.Format("{0:#}, {0:#.##}", num));
      
      Console.ReadKey();
    }
  }
}

実行結果:

12, 12.35

3桁区切りで表示する方法

3桁区切りで表示する方法についてサンプルコードで確認しましょう。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      double num = 123456789;
      Console.WriteLine(String.Format("{0:#,0}", num));
      
      Console.ReadKey();
    }
  }
}

実行結果:

123,456,789

¥マークを付ける方法

¥マークを付ける方法についてサンプルコードで確認しましょう。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      double num = 123456789;
      Console.WriteLine(String.Format("{0:C}", num));
      
      Console.ReadKey();
    }
  }
}

実行結果:

123,456,789

%表示する方法

%表示する方法についてサンプルコードで確認しましょう。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      double num = 0.1234;
      Console.WriteLine(String.Format("{0:P}", num));
      
      Console.ReadKey();
    }
  }
}

実行結果:

12.34 %

複数の文字列を連結する方法

複数の文字列を連結する方法についてサンプルコードで確認しましょう。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str1 = "侍";
      string str2 = "塾";
      Console.WriteLine(String.Format("{0}エンジニア{1}", str1, str2));
      
      Console.ReadKey();
    }
  }
}

実行結果:

侍エンジニア

まとめ

ここでは、StringクラスのFormatメソッドについて説明しました。今回お伝えした書式指定子、カスタム書式指定子はToStringメソッドやConsole.WriteLineメソッドでも同じように使えます。

出力形式を読みやすくすることができますので、使いこなすことができるように、この記事を何度も参考にして下さいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次