【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メソッドでも同じように使えます。

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

この記事を書いた人

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

目次