書式設定の概要

.NET Framework には、値を表示に適した文字列に変換するカスタマイズ可能な汎用の書式指定機構が用意されています。たとえば、数値は 16 進表記、指数表記、またはユーザー指定の区切り文字で区切られた一連の数字として書式指定できます。日付と時刻は、特定の国、地域、またはカルチャに応じた書式を指定できます。列挙定数はその数値または名前として書式指定できます。

書式指定を制御するには、書式指定文字列および書式プロバイダを指定するか、既定の設定を使用します。書式指定文字列には、値の変換方法を指定する 1 つ以上の書式指定子文字が含まれます。書式プロバイダは、特定の型の変換に必要な追加の制御、置換、およびカルチャ情報を提供します。

IFormattable インターフェイスを実装して .NET Framework による書式指定文字列の解釈方法をオーバーライドしたり、IFormatProvider インターフェイスを実装して独自の書式プロバイダを提供したり、ICustomFormatter インターフェイスを実装して独自の書式指定を実行したりできます。

.NET Framework には、1 つ以上の書式指定文字列を使用して、結果の文字列に 1 つ以上の書式指定した値を埋め込む複合書式設定と呼ばれる機能が用意されています。結果の文字列をさらに処理したり、システム コンソールに表示したり、ストリームに書き込んだりできます。

書式指定子

.NET Framework では、数値、日付と時刻、および列挙型の書式を設定するための標準書式指定子およびカスタム書式指定子を定義しています。書式指定子は、Console.WriteLine などの、出力文字列を書式設定するさまざまなメソッドや任意の型の ToString メソッド、および入力文字列を解析する DateTime.ParseExact などの一部のメソッドで使用されます。

数値データの書式設定については、「数値書式指定文字列」を参照してください。一般的に使用される数値の書式指定子の表については、「標準の数値書式指定文字列」を参照してください。独自の書式指定文字列を作成するために使用できるカスタム書式指定子の表については、「カスタム数値書式指定文字列」を参照してください。

日付と時刻の書式設定については、「日付と時刻の書式指定文字列」を参照してください。一般的に使用される日付と時刻の書式指定子の表については、「標準の DateTime 書式指定文字列」を参照してください。独自の書式指定文字列を作成するために使用できる日付と時刻のカスタム書式指定子の表については、「カスタム DateTime 書式指定文字列」を参照してください。

列挙型の書式設定と、標準の列挙型書式指定子の表については、「列挙型書式指定文字列」を参照してください。

解析と書式指定子

書式設定は型の値を文字列形式に変換します。解析は、書式設定の逆で、文字列形式からデータ型を作成します。書式プロバイダは解析の実行方法を制御し、DateTime.ParseExact などの一部のメソッドは文字列形式の予測される書式を示す書式指定子パラメータを使用します。解析の詳細については、「文字列の解析」を参照してください。

ToString と書式指定子

.NET Framework では、基本的な書式設定を実行する、型の既定の ToString メソッドのオーバーロードと、値の書式設定を指定する書式指定子パラメータを使用する特殊なバージョンの ToString をサポートしています。詳細については、「基本型の書式設定」および IFormattable インターフェイスを参照してください。

書式プロバイダ

書式プロバイダは、数値文字列の書式設定で小数点として使用する文字や、DateTime オブジェクトの書式設定で使用する区切り文字などの情報を提供します。書式プロバイダは、書式指定子による書式設定で使用される文字を定義しますが、書式指定子自体を定義するわけではありません。

書式プロバイダは、IFormattable インターフェイスで必要な ToString のオーバーロードに渡されるか、または書式プロバイダが渡されない場合にテキストの書式を設定するメソッドによって事前に決定されます。

書式プロバイダが渡されない場合には、.NET Framework の標準書式プロバイダのいずれかで書式情報が推測されるか、または標準書式プロバイダから書式情報が取得されます。一般的に、IFormattable を実装するクラスは、書式指定子だけまたは書式プロバイダだけを受け入れる ToString のオーバーロードも提供します。既定の ToString メソッドは、パラメータを受け取らず、Object クラスから継承されます。

数値データ用の定義済みの書式プロバイダについては、「NumberFormatInfo」を参照してください。日付と時刻用の定義済みの書式プロバイダについては、「DateTimeFormatInfo」を参照してください。カスタム書式プロバイダ、つまり別のカルチャの書式プロバイダの作成については、「CultureInfo」および「カルチャ別の書式設定」を参照してください。

複合書式設定

.NET Framework の複合書式設定機能は、String.Format などのメソッドや、System.Console および System.IO.TextWriter などの出力メソッドによってサポートされ、元の文字列に埋め込まれたインデックス付きの各書式指定項目を、値のリスト内の書式設定された対応する要素に置換します。詳細については、「複合書式設定」を参照してください。

参照

関連項目

IFormattable Interface
IFormatProvider Interface
ICustomFormatter Interface

概念

数値書式指定文字列
日付と時刻の書式指定文字列
列挙型書式指定文字列
書式指定文字列のカスタマイズ
複合書式設定

その他の技術情報

型の書式設定
文字列の解析
基本的な文字列操作