書式設定の概要

更新 : 2007 年 11 月

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

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

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

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

書式指定子

.NET Framework では、数値、日付と時刻、および列挙型の書式を設定するための標準書式指定子およびカスタム書式指定子を定義しています。書式指定子は、出力文字列を書式設定するさまざまなメソッド (Console.WriteLine など)、特定の型の ToString メソッドの個々のオーバーロード、および入力文字列を解析するいくつかのメソッド (ParseDateTime.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

IFormatProvider

ICustomFormatter

その他の技術情報

型の書式設定

文字列の解析

基本的な文字列操作