String.Format String.Format String.Format String.Format Method

Definition

指定された形式に基づいてオブジェクトの値を文字列に変換し、別の文字列に挿入します。 Converts the value of objects to strings based on the formats specified and inserts them into another string. String.Format メソッドを初めて使用する場合は、「Get started with the String.Format method」(String.Format メソッドの概要) セクションを参照して、概要をご確認ください。 If you are new to the String.Format method, see the Get started with the String.Format method section for a quick overview. String.Format メソッドの全般的な説明については、「Remarks」 (解説) セクションを参照してください。 See the Remarks section for general documentation for the String.Format method.

Overloads

Format(IFormatProvider, String, Object, Object, Object) Format(IFormatProvider, String, Object, Object, Object) Format(IFormatProvider, String, Object, Object, Object) Format(IFormatProvider, String, Object, Object, Object)

文字列の書式項目を、指定した 3 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of three specified objects. パラメーターにより、カルチャに固有の書式設定情報を指定します。 An parameter supplies culture-specific formatting information.

Format(String, Object, Object, Object) Format(String, Object, Object, Object) Format(String, Object, Object, Object) Format(String, Object, Object, Object)

文字列の書式項目を、指定した 3 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of three specified objects.

Format(IFormatProvider, String, Object, Object) Format(IFormatProvider, String, Object, Object) Format(IFormatProvider, String, Object, Object) Format(IFormatProvider, String, Object, Object)

文字列の書式項目を、指定した 2 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of two specified objects. パラメーターにより、カルチャに固有の書式情報が指定されます。 A parameter supplies culture-specific formatting information.

Format(String, Object, Object) Format(String, Object, Object) Format(String, Object, Object) Format(String, Object, Object)

文字列の書式項目を、指定した 2 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of two specified objects.

Format(IFormatProvider, String, Object[]) Format(IFormatProvider, String, Object[]) Format(IFormatProvider, String, Object[]) Format(IFormatProvider, String, Object[])

文字列の書式項目を、指定した配列内の対応するオブジェクトの文字列表記に置換します。 Replaces the format items in a string with the string representations of corresponding objects in a specified array. パラメーターにより、カルチャに固有の書式情報が指定されます。 A parameter supplies culture-specific formatting information.

Format(IFormatProvider, String, Object) Format(IFormatProvider, String, Object) Format(IFormatProvider, String, Object) Format(IFormatProvider, String, Object)

指定した文字列の 1 つまたは複数の書式項目を、対応するオブジェクトの文字列形式に置換します。 Replaces the format item or items in a specified string with the string representation of the corresponding object. パラメーターにより、カルチャに固有の書式情報が指定されます。 A parameter supplies culture-specific formatting information.

Format(String, Object[]) Format(String, Object[]) Format(String, Object[]) Format(String, Object[])

指定した文字列の書式項目を、指定した配列内の対応するオブジェクトの文字列形式に置換します。 Replaces the format item in a specified string with the string representation of a corresponding object in a specified array.

Format(String, Object) Format(String, Object) Format(String, Object) Format(String, Object)

文字列の 1 つ以上の書式項目を、指定されたオブジェクトの文字列表記に置換します。 Replaces one or more format items in a string with the string representation of a specified object.

Examples

呼び出すさまざまな例、Formatメソッドが混在してから、解説この記事のセクション。Numerous examples that call the Format method are interspersed through the Remarks section of this article.

注意

この記事の C# 例は、Try.NET インライン コード ランナーとプレイグラウンドで実行されます。The C# examples in this article run in the Try.NET inline code runner and playground. [実行] ボタンを選択すると、対話型ウィンドウで例が実行されます。Select the Run button to run an example in an interactive window. コードを実行したら、コードを変更し、[実行] をもう一度選択して変更後のコードを実行できます。Once you execute the code, you can modify it and run the modified code by selecting Run again. 変更後のコードが対話型ウィンドウで実行されるか、コンパイルできなかった場合、対話型ウィンドウにすべての C# コンパイラ エラー メッセージが表示されます。The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

完全なセットをダウンロードすることもできますString.Format例については、に含まれる、 (C#) または .NET Core 2.0 プロジェクトVisual basic .NET Core 2.0 プロジェクト、から、 dotnet/。サンプルの GitHub リポジトリします。You can also download a complete set of String.Format examples, which are included a .NET Core 2.0 project for C# and a .NET Core 2.0 project for Visual Basic, from the dotnet/samples GitHub repository.

この記事の例の一部を次に示します。The following are some of the examples included in the article:

書式指定文字列を作成します。Create a format string

文字列を挿入します。Inserting a string
書式指定項目The format item
インデックスが同じである書式指定項目Format items that have the same index

書式設定された出力を制御します。Control formatted output

書式設定を制御します。Controlling formatting
間隔を制御します。Controlling spacing
配置を制御します。Controlling alignment
整数の桁の数を制御します。Controlling the number of integral digits
小数点区切り文字の後の桁数を制御します。Controlling the number of digits after the decimal separator
結果の文字列にリテラル中かっこを含むIncluding literal braces in a result string

カルチャに依存する書式指定文字列を作成します。Make format strings culture-sensitive

カルチャの書式設定Culture-sensitive formatting

書式設定操作をカスタマイズします。Customize the formatting operation

カスタムの書式設定操作A custom formatting operation
切片プロバイダーおよびフォーマッタのローマ数字An intercept provider and Roman numeral formatter

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このセクションの内容:In this section:

String.Format メソッドを概要します。 Get started with the String.Format method
どのメソッドが呼び出しですか。 Which method do I call?
Format メソッドの概要 The Format method in brief
書式指定項目 The Format item
引数の書式設定方法 How arguments are formatted
インデックスが同じである書式指定項目 Format items that have the same index
書式とカルチャ Formatting and culture
カスタムの書式設定操作 Custom formatting operations
String.Format の Q & AString.Format Q & A

String.Format メソッドを概要します。Get started with the String.Format method

使用String.Formatオブジェクト、変数、または式の値を別の文字列に挿入する必要がある場合。Use String.Format if you need to insert the value of an object, variable, or expression into another string. 値を挿入するなど、Decimalに 1 つの文字列としてユーザーに表示する文字列値。For example, you can insert the value of a Decimal value into a string to display it to the user as a single string:

Decimal pricePerOunce = (Decimal)17.36;
String^ s = String::Format("The current price is {0} per ounce.",
                           pricePerOunce);
// Result: The current price is 17.36 per ounce.
Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0} per ounce.",
                         pricePerOunce);
Console.WriteLine(s);
// Result: The current price is 17.36 per ounce.
Dim pricePerOunce As Decimal = 17.36d
Dim s As String = String.Format("The current price is {0} per ounce.",
                                pricePerOunce)
' Result: The current price is 17.36 per ounce.

その値の書式を制御できます。And you can control that value's formatting:

Decimal pricePerOunce = (Decimal)17.36;
String^ s = String::Format("The current price is {0:C2} per ounce.",
                           pricePerOunce);
// Result if current culture is en-US:
//      The current price is $17.36 per ounce.
Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0:C2} per ounce.",
                         pricePerOunce);
Console.WriteLine(s);
// Result if current culture is en-US:
//      The current price is $17.36 per ounce.
Dim pricePerOunce As Decimal = 17.36d
Dim s As String = String.Format("The current price is {0:C2} per ounce.",
                                pricePerOunce)
' Result if current culture is en-US:
'      The current price is $17.36 per ounce.

書式設定、だけでなく、配置と間隔も制御できます。Besides formatting, you can also control alignment and spacing.

文字列を挿入します。Inserting a string

String.Format 1 つ以上のオブジェクトまたは文字列に変換および書式指定文字列で指定された位置に挿入される式を続けて、書式指定文字列で始まります。String.Format starts with a format string, followed by one or more objects or expressions that will be converted to strings and inserted at a specified place in the format string. 例:For example:

Decimal temp = (Decimal)20.4;
String^ s = String::Format("The temperature is {0}°C.", temp);
Console::WriteLine(s);
// Displays 'The temperature is 20.4°C.'
decimal temp = 20.4m;
string s = String.Format("The temperature is {0}°C.", temp);
Console.WriteLine(s);
// Displays 'The temperature is 20.4°C.'
Dim temp As Decimal = 20.4d
Dim s As String = String.Format("The temperature is {0}°C.", temp)
Console.WriteLine(s)
' Displays 'The temperature is 20.4°C.'

{0}形式の文字列が書式指定項目。The {0} in the format string is a format item. 0 文字列値を持つはその位置に挿入するオブジェクトのインデックスです。0 is the index of the object whose string value will be inserted at that position. (インデックスは 0 から始まる)。挿入されるオブジェクトが、文字列ではない場合、ToString結果の文字列に挿入する前にいずれかに変換するメソッドが呼び出されます。(Indexes start at 0.) If the object to be inserted is not a string, its ToString method is called to convert it to one before inserting it in the result string.

オブジェクトの一覧で、2 つの書式指定項目と 2 つのオブジェクトを使用する別の例を次に示します。Here's another example that uses two format items and two objects in the object list:

String^ s = String::Format("At {0}, the temperature is {1}°C.",
                           DateTime::Now, 20.4);
// Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'
string s = String.Format("At {0}, the temperature is {1}°C.",
                         DateTime.Now, 20.4);
Console.WriteLine(s);
// Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'
Dim s As String = String.Format("At {0}, the temperature is {1}°C.",
                                Date.Now, 20.4)
' Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'

多くの書式項目があることができ、に多くのオブジェクトとオブジェクトの一覧で、すべての書式指定項目のインデックスは、オブジェクトの一覧で一致するオブジェクトを持つ限り。You can have as many format items and as many objects in the object list as you want, as long as the index of every format item has a matching object in the object list. する必要はありません心配についてどのオーバー ロードを呼び出します。コンパイラは、適切な人を選択します。You also don't have to worry about which overload you call; the compiler will select the appropriate one for you.

書式設定を制御します。Controlling formatting

オブジェクトの書式設定方法を制御する書式指定文字列に書式指定項目のインデックスに従うことができます。You can follow the index in a format item with a format string to control how an object is formatted. たとえば、 {0:d} "d"書式指定文字列をオブジェクトの一覧の最初のオブジェクトに適用されます。For example, {0:d} applies the "d" format string to the first object in the object list. 1 つのオブジェクトの例を次に示し、2 つの項目の書式設定。Here is an example with a single object and two format items:

String^ s = String::Format("It is now {0:d} at {0:t}",
                           DateTime::Now);
// Output similar to: 'It is now 4/10/2015 at 10:04 AM'
string s = String.Format("It is now {0:d} at {0:t}", DateTime.Now);
Console.WriteLine(s);
// Output similar to: 'It is now 4/10/2015 at 10:04 AM'
Dim s As String = String.Format("It is now {0:d} at {0:t}",
                                Date.Now)
' Output similar to: 'It is now 4/10/2015 at 10:04 AM'

書式指定文字列、すべての数値型などのさまざまな型のサポート (両方標準カスタム書式指定文字列)、すべての日付と時刻 (両方標準カスタム書式指定文字列) と時間間隔 (両方標準カスタム書式指定文字列)、すべての列挙型列挙型、およびGuidします。A number of types support format strings, including all numeric types (both standard and custom format strings), all dates and times (both standard and custom format strings) and time intervals (both standard and custom format strings), all enumeration types enumeration types, and GUIDs. 独自の型を書式指定文字列のサポートを追加することもできます。You can also add support for format strings to your own types.

間隔を制御します。Controlling spacing

などの構文を使用して、結果の文字列に挿入する文字列の幅を定義する{0,12}、12 文字の文字列が挿入されます。You can define the width of the string that is inserted into the result string by using syntax such as {0,12}, which inserts a 12-character string. この場合、最初のオブジェクトの文字列表現は右揃えで 12 文字のフィールドです。In this case, the string representation of the first object is right-aligned in the 12-character field. (最初のオブジェクトの文字列表現が 12 以上の文字の場合は、ただし推奨されるフィールドの幅は無視され、文字列全体が、結果の文字列に挿入されます。)(If the string representation of the first object is more than 12 characters in length, though, the preferred field width is ignored, and the entire string is inserted into the result string.)

次の例は、文字列を保持するために 6 文字のフィールドを定義"Year"と年の一部の文字列だけでなく、15 文字のフィールド"Population"文字列を保持するために、いくつかの人口データ。The following example defines a 6-character field to hold the string "Year" and some year strings, as well as an 15-character field to hold the string "Population" and some population data. 文字が右揃え フィールドに注意してください。Note that the characters are right-aligned in the field.

array<int>^ years = { 2013, 2014, 2015 };
array<int>^ population = { 1025632, 1105967, 1148203 };
StringBuiler^ sb = gcnew StringBuilder();
sb->Append(String::Format("{0,6} {1,15}\n\n", "Year", "Population"));
for(int index = 0; index < years->Length; index++)
   sb->AppendFormat("{0,6} {1,15:N0}\n",
                    years[index], population[index]);
// Result:
//      Year      Population
//
//      2013       1,025,632
//      2014       1,105,967
//      2015       1,148,203
using System;
using System.Text;
 
class Example
{
   public static void Main()
   {
       // <Snippet33>
       int[] years = { 2013, 2014, 2015 };
       int[] population = { 1025632, 1105967, 1148203 };
       var sb = new StringBuilder();
       sb.Append(String.Format("{0,6} {1,15}\n\n", "Year", "Population"));
       for (int index = 0; index < years.Length; index++)
          sb.Append(String.Format("{0,6} {1,15:N0}\n", years[index], population[index]));
  
       Console.WriteLine(sb);
   }
}  
// Result:
//      Year      Population
//
//      2013       1,025,632
//      2014       1,105,967
//      2015       1,148,203


Dim years() As Integer = { 2013, 2014, 2015 }
Dim population() As Integer  = { 1025632, 1105967, 1148203 }
Dim sb As New StringBuilder()
sb.Append(String.Format("{0,6} {1,15}{2}{2}",
                        "Year", "Population", vbCrLf))
For index As Integer = 0 To years.Length - 1
   sb.AppendFormat("{0,6} {1,15:N0}{2}",
                   years(index), population(index), vbCrLf)
Next
' Result:
'      Year      Population
'
'      2013       1,025,632
'      2014       1,105,967
'      2015       1,148,203

配置を制御します。Controlling alignment

既定では、文字列は、フィールド内で右揃えのフィールド幅を指定する場合です。By default, strings are right-aligned within their field if you specify a field width. フィールド内の文字列を左揃えにするが付いて、負の符号でフィールドの幅など{0,-12}12 文字の左揃えのフィールドを定義します。To left-align strings in a field, you preface the field width with a negative sign, such as {0,-12} to define a 12-character left-aligned field.

次の例は、点が異なりますが左揃えのラベルとデータの両方には、前に似ています。The following example is similar to the previous one, except that it left-aligns both labels and data.

array<int>^ years = { 2013, 2014, 2015 };
array<int>^ population = { 1025632, 1105967, 1148203 };
String^ s = String::Format("{0,-10} {1,-10}\n\n", "Year", "Population");
for(int index = 0; index < years->Length; index++)
   s += String::Format("{0,-10} {1,-10:N0}\n",
                      years[index], population[index]);
// Result:
//    Year       Population
//
//    2013       1,025,632
//    2014       1,105,967
//    2015       1,148,203
int[] years = { 2013, 2014, 2015 };
int[] population = { 1025632, 1105967, 1148203 };
String s = String.Format("{0,-10} {1,-10}\n\n", "Year", "Population");
for(int index = 0; index < years.Length; index++)
   s += String.Format("{0,-10} {1,-10:N0}\n",
                      years[index], population[index]);
Console.WriteLine($"\n{s}");
// Result:
//    Year       Population
//
//    2013       1,025,632
//    2014       1,105,967
//    2015       1,148,203
Dim years() As Integer = { 2013, 2014, 2015 }
Dim population() As Integer  = { 1025632, 1105967, 1148203 }
Dim s As String = String.Format("{0,-10} {1,-10}{2}{2}",
                                "Year", "Population", vbCrLf)
For index As Integer = 0 To years.Length - 1
   s += String.Format("{0,-10} {1,-10:N0}{2}",
                      years(index), population(index), vbCrLf)
Next
' Result:
'    Year       Population
'
'    2013       1,025,632
'    2014       1,105,967
'    2015       1,148,203

String.Format 複合書式指定機能を利用します。String.Format makes use of the composite formatting feature. 詳細については、「複合書式指定」をご覧ください。For more information, see Composite Formatting.

どのメソッドが呼び出しですか。Which method do I call?

終了To CallCall
現在のカルチャの規則を使用して 1 つまたは複数のオブジェクトの書式設定します。Format one or more objects by using the conventions of the current culture. 含むオーバー ロードを除く、providerパラメーター、残りのFormatオーバー ロードが含まれて、Stringパラメーターの後に 1 つまたは複数のオブジェクトのパラメーター。Except for the overloads that include a provider parameter, the remaining Format overloads include a String parameter followed by one or more object parameters. このため、決定する必要はありませんFormatオーバー ロードを呼び出そうとします。Because of this, you don't have to determine which Format overload you intend to call. ないオーバー ロードの中から適切なオーバー ロードを選択する、言語コンパイラをprovider引数一覧に基づいて、パラメーター。Your language compiler selects the appropriate overload from among the overloads that don't have a provider parameter, based on your argument list. たとえば、引数リストに 5 つの引数がある場合は、コンパイラは、Format(String, Object[])メソッド。For example, if your argument list has five arguments, the compiler calls the Format(String, Object[]) method.
特定のカルチャの規則を使用して 1 つまたは複数のオブジェクトの書式設定します。Format one or more objects by using the conventions of a specific culture. Formatオーバー ロードで始まる、providerパラメーターが続く、Stringパラメーターと 1 つ以上のパラメーターのオブジェクトします。Each Format overload that begins with a provider parameter is followed by a String parameter and one or more object parameters. このため、対象となるを決定する必要はありませんFormatオーバー ロードを呼び出そうとします。Because of this, you don't have to determine which specific Format overload you intend to call. 言語のコンパイラがオーバー ロードの中から適切なオーバー ロードを選択する、provider引数一覧に基づいて、パラメーター。Your language compiler selects the appropriate overload from among the overloads that have a provider parameter, based on your argument list. たとえば、引数リストに 5 つの引数がある場合は、コンパイラは、Format(IFormatProvider, String, Object[])メソッド。For example, if your argument list has five arguments, the compiler calls the Format(IFormatProvider, String, Object[]) method.
いずれかで、カスタムの書式設定操作の実行、ICustomFormatter実装またはIFormattable実装します。Perform a custom formatting operation either with an ICustomFormatter implementation or an IFormattable implementation. 持つ 4 つのオーバー ロードのいずれかをproviderパラメーター。Any of the four overloads with a provider parameter. コンパイラがオーバー ロードの中から適切なオーバー ロードを選択する、provider引数リストに基づくパラメーター。The compiler selects the appropriate overload from among the overloads that have a provider parameter, based on your argument list.

Format メソッドの概要The Format method in brief

各オーバー ロード、Formatメソッドは、複合書式指定機能と呼ばれる 0 から始まるプレース ホルダーのインデックスを含めるアイテムの書式、複合書式指定文字列。Each overload of the Format method uses the composite formatting feature to include zero-based indexed placeholders, called format items, in a composite format string. 実行時に、各書式項目は、パラメーター リスト内の対応する引数の文字列形式に置き換えられます。At run time, each format item is replaced with the string representation of the corresponding argument in a parameter list. 引数の値が場合null、書式指定項目が置き換えString.Emptyします。If the value of the argument is null, the format item is replaced with String.Empty. たとえば、次の呼び出し、Format(String, Object, Object, Object)メソッドには、次の 3 つの書式項目を含む書式指定文字列が含まれています。 {0}、 {1}、および{2}、および引数リストを 3 つの項目。For example, the following call to the Format(String, Object, Object, Object) method includes a format string with three format items, {0}, {1}, and {2}, and an argument list with three items.

using namespace System;

void main()
{
   DateTime^ dat = gcnew DateTime(2012, 1, 17, 9, 30, 0); 
   String^ city = "Chicago";
   int temp = -16;
   String^ output = String::Format("At {0} in {1}, the temperature was {2} degrees.",
                                   dat, city, temp);
   Console::WriteLine(output);
}
// The example displays the following output: 
//    At 1/17/2012 9:30:00 AM in Chicago, the temperature was -16 degrees.   
DateTime dat = new DateTime(2012, 1, 17, 9, 30, 0); 
string city = "Chicago";
int temp = -16;
string output = String.Format("At {0} in {1}, the temperature was {2} degrees.",
                              dat, city, temp);
Console.WriteLine(output);
// The example displays output like the following:
//    At 1/17/2012 9:30:00 AM in Chicago, the temperature was -16 degrees.   
Dim dat As Date = #1/17/2012 9:30AM# 
Dim city As String = "Chicago"
Dim temp As Integer = -16
Dim output As String = String.Format("At {0} in {1}, the temperature was {2} degrees.",
                                     dat, city, temp)
Console.WriteLine(output)
' The example displays the following output:
'    At 1/17/2012 9:30:00 AM in Chicago, the temperature was -16 degrees.   

書式指定項目The format item

書式指定項目では、この構文があります。A format item has this syntax:

{index[,alignment][:formatString]}  

角かっこは省略可能な要素を表します。Brackets denote optional elements. 開始タグと右中かっこが必要です。The opening and closing braces are required. (を含めることが、リテラルの開く、閉じる、書式指定文字列に中かっこを参照してください、エスケープ中かっこセクション、複合書式指定記事です)。(To include a literal opening or closing brace in the format string, see the Escaping Braces section in the Composite Formatting article.)

たとえば、次のように通貨値の書式設定の書式指定項目が表示されます。For example, a format item to format a currency value might appear like this:

String::Format("{0,-10:C}", (Decimal) 126347.89);         
var value = String.Format("{0,-10:C}", 126347.89m);         
Console.WriteLine(value);
String.Format("{0,-10:C}", 126347.89d)        

書式指定項目には、次の要素があります。A format item has the following elements:

indexindex
文字列を表現する場合は、引数の 0 から始まるインデックス、文字列内のこの位置に含まれています。The zero-based index of the argument whose string representation is to be included at this position in the string. 場合、この引数はnull、空の文字列は、文字列のこの位置で含まれるなります。If this argument is null, an empty string will be included at this position in the string.

alignmentalignment
任意。Optional. 引数を挿入するかどうかは右揃え (正の整数) か、(負の整数) を左揃えのフィールドの長さの合計を示す符号付き整数。A signed integer that indicates the total length of the field into which the argument is inserted and whether it is right-aligned (a positive integer) or left-aligned (a negative integer). 省略した場合配置、先頭または末尾のスペースなしのフィールドに対応する引数の文字列表現が挿入されます。If you omit alignment, the string representation of the corresponding argument is inserted in a field with no leading or trailing spaces.

場合の値配置が挿入される引数の長さより小さい配置は無視されます、引数の文字列表現の長さは、フィールドの幅として使用されます。If the value of alignment is less than the length of the argument to be inserted, alignment is ignored and the length of the string representation of the argument is used as the field width.

formatStringformatString
任意。Optional. 対応する引数の結果の文字列の形式を指定する文字列。A string that specifies the format of the corresponding argument's result string. 省略した場合formatString、対応する引数のパラメーターなしToString文字列表現を生成するためにメソッドが呼び出されます。If you omit formatString, the corresponding argument's parameterless ToString method is called to produce its string representation. 指定した場合formatString、書式指定項目によって参照される引数を実装する必要があります、IFormattableインターフェイス。If you specify formatString, the argument referenced by the format item must implement the IFormattable interface. 書式指定文字列をサポートする型は次のとおりです。Types that support format strings include:

ただし、任意のカスタム型を実装できることに注意してくださいIFormattable既存の型の拡張またはIFormattable実装します。However, note that any custom type can implement IFormattable or extend an existing type's IFormattable implementation.

次の例では、alignmentformatString引数を書式設定された出力を生成します。The following example uses the alignment and formatString arguments to produce formatted output.

using namespace System;

void main()
{
   // Create array of 5-tuples with population data for three U.S. cities, 1940-1950.
   array<Tuple<String^, DateTime, int, DateTime, int>^>^ cities = gcnew array<Tuple<String^, DateTime, int, DateTime, int>^> 
         { gcnew Tuple<String^, DateTime, int, DateTime, int>("Los Angeles", DateTime(1940, 1, 1), 1504277, 
                        DateTime(1950, 1, 1), 1970358),
         gcnew Tuple<String^, DateTime, int, DateTime, int>("New York", DateTime(1940, 1, 1), 7454995, 
                        DateTime(1950, 1, 1), 7891957),  
         gcnew Tuple<String^, DateTime, int, DateTime, int>("Chicago", DateTime(1940, 1, 1), 3396808, 
                        DateTime(1950, 1, 1), 3620962),  
         gcnew Tuple<String^, DateTime, int, DateTime, int>("Detroit", DateTime(1940, 1, 1), 1623452, 
                        DateTime(1950, 1, 1), 1849568) };

   // Display header
   String^ header = String::Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n",
                                   "City", "Year", "Population", "Change (%)");
   Console::WriteLine(header);
   String^ output;      
   for each (Tuple<String^, DateTime, int, DateTime, int>^ city in cities) {
      output = String::Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                              city->Item1, city->Item2, city->Item3, city->Item4, city->Item5,
                              (city->Item5 - city->Item3)/ (double)city->Item3);
      Console::WriteLine(output);
   }
}
// The example displays the following output:
//    City            Year  Population    Year  Population    Change (%)
//    
//    Los Angeles     1940   1,504,277    1950   1,970,358        31.0 %
//    New York        1940   7,454,995    1950   7,891,957         5.9 %
//    Chicago         1940   3,396,808    1950   3,620,962         6.6 %
//    Detroit         1940   1,623,452    1950   1,849,568        13.9 %
using System;

public class Example
{
   public static void Main()
   {
      // Create array of 5-tuples with population data for three U.S. cities, 1940-1950.
      Tuple<string, DateTime, int, DateTime, int>[] cities = 
          { Tuple.Create("Los Angeles", new DateTime(1940, 1, 1), 1504277, 
                         new DateTime(1950, 1, 1), 1970358),
            Tuple.Create("New York", new DateTime(1940, 1, 1), 7454995, 
                         new DateTime(1950, 1, 1), 7891957),  
            Tuple.Create("Chicago", new DateTime(1940, 1, 1), 3396808, 
                         new DateTime(1950, 1, 1), 3620962),  
            Tuple.Create("Detroit", new DateTime(1940, 1, 1), 1623452, 
                         new DateTime(1950, 1, 1), 1849568) };

      // Display header
      var header = String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n",
                                    "City", "Year", "Population", "Change (%)");
      Console.WriteLine(header);
      foreach (var city in cities) {
         var output = String.Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                                city.Item1, city.Item2, city.Item3, city.Item4, city.Item5,
                                (city.Item5 - city.Item3)/ (double)city.Item3);
         Console.WriteLine(output);
      }
   }
}
// The example displays the following output:
//    City            Year  Population    Year  Population    Change (%)
//    
//    Los Angeles     1940   1,504,277    1950   1,970,358        31.0 %
//    New York        1940   7,454,995    1950   7,891,957         5.9 %
//    Chicago         1940   3,396,808    1950   3,620,962         6.6 %
//    Detroit         1940   1,623,452    1950   1,849,568        13.9 %
Module Example
   Public Sub Main()
      ' Create array of 5-tuples with population data for three U.S. cities, 1940-1950.
      Dim cities()  = _
          { Tuple.Create("Los Angeles", #1/1/1940#, 1504277, #1/1/1950#, 1970358),
            Tuple.Create("New York", #1/1/1940#, 7454995, #1/1/1950#, 7891957),  
            Tuple.Create("Chicago", #1/1/1940#, 3396808, #1/1/1950#, 3620962),  
            Tuple.Create("Detroit", #1/1/1940#, 1623452, #1/1/1950#, 1849568) }

      ' Display header
      Dim header As String = String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}",
                                           "City", "Year", "Population", "Change (%)")
      Console.WriteLine(header)
      Console.WriteLine()
      For Each city In cities
         Dim output = String.Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                                city.Item1, city.Item2, city.Item3, city.Item4, city.Item5,
                                (city.Item5 - city.Item3)/city.Item3)
         Console.WriteLine(output)
      Next
   End Sub
End Module
' The example displays the following output:
'    City            Year  Population    Year  Population    Change (%)
'    
'    Los Angeles     1940   1,504,277    1950   1,970,358        31.0 %
'    New York        1940   7,454,995    1950   7,891,957         5.9 %
'    Chicago         1940   3,396,808    1950   3,620,962         6.6 %
'    Detroit         1940   1,623,452    1950   1,849,568        13.9 %

引数の書式設定方法How arguments are formatted

書式項目は、文字列の先頭から順番に処理されます。Format items are processed sequentially from the beginning of the string. 各書式指定項目には、メソッドの引数リスト内のオブジェクトに対応するインデックスがあります。Each format item has an index that corresponds to an object in the method's argument list. Formatメソッドは引数を取得し、その文字列形式を次のように派生します。The Format method retrieves the argument and derives its string representation as follows:

呼び出しをインターセプトする例については、ICustomFormatter.Formatメソッドを使用すると、どのような情報を参照してくださいと、Formatメソッドが、複合書式指定文字列の各書式項目の書式指定メソッドに渡すを参照してください例: 切片プロバイダーとローマ数字フォーマッタします。For an example that intercepts calls to the ICustomFormatter.Format method and allows you to see what information the Format method passes to a formatting method for each format item in a composite format string, see Example: An intercept provider and Roman numeral formatter.

詳細については、次を参照してください。、処理順序セクション、複合書式指定記事。For more information, see the Processing Order section in the Composite Formatting article.

インデックスが同じである書式指定項目Format items that have the same index

Formatメソッドがスローされます、FormatExceptionインデックス項目のインデックスがより大きいか、引数リストの引数の値に等しい場合は例外です。The Format method throws a FormatException exception if the index of an index item is greater than or equal to the number of arguments in the argument list. ただし、format同じインデックスを複数の書式項目がある限り、引数があるほど、多くの書式項目を含めることができます。However, format can include more format items than there are arguments, as long as multiple format items have the same index. 呼び出しで、Format(String, Object)次の例では、引数リスト内のメソッドが 1 つの引数が書式指定文字列に 2 つの書式項目が含まれています: 10 進値、数値のいずれかが表示されますおよび他の 16 進値が表示されます。In the call to the Format(String, Object) method in following example, the argument list has a single argument, but the format string includes two format items: one displays the decimal value of a number, and the other displays its hexadecimal value.

public class Example
{
   public static void Main()
   {
      short[] values= { Int16.MinValue, -27, 0, 1042, Int16.MaxValue };
      Console.WriteLine("{0,10}  {1,10}\n", "Decimal", "Hex");
      foreach (short value in values)
      {
         string formatString = String.Format("{0,10:G}: {0,10:X}", value);
         Console.WriteLine(formatString);
      }   
   }
}
// The example displays the following output:
//       Decimal         Hex
//    
//        -32768:       8000
//           -27:       FFE5
//             0:          0
//          1042:        412
//         32767:       7FFF
Module Example
   Public Sub Main()
      Dim values() As Short = { Int16.MinValue, -27, 0, 1042, Int16.MaxValue }
      Console.WriteLine("{0,10}  {1,10}", "Decimal", "Hex")
      Console.WriteLine()
      For Each value As Short In values
         Dim formatString As String = String.Format("{0,10:G}: {0,10:X}", value)
         Console.WriteLine(formatString)
      Next        
   End Sub
End Module
' The example displays the following output:
'       Decimal         Hex
'    
'        -32768:       8000
'           -27:       FFE5
'             0:          0
'          1042:        412
'         32767:       7FFF

書式とカルチャFormatting and culture

によって返される現在のカルチャの規則を使用して、引数リスト内のオブジェクトをその文字列表現に変換されます一般に、CultureInfo.CurrentCultureプロパティ。Generally, objects in the argument list are converted to their string representations by using the conventions of the current culture, which is returned by the CultureInfo.CurrentCulture property. いずれかのオーバー ロードを呼び出すことによって、この動作を制御できますFormatを含む、providerパラメーター。You can control this behavior by calling one of the overloads of Format that includes a provider parameter. providerパラメーターは、IFormatProvider中程度の書式設定に使用されるカスタムおよびカルチャ固有の書式設定情報を提供する実装を処理します。The provider parameter is an IFormatProvider implementation that supplies custom and culture-specific formatting information that is used to moderate the formatting process.

IFormatProviderインターフェイスが 1 つのメンバー、 GetFormat、これは書式設定情報を提供するオブジェクトを取得する責任を負います。The IFormatProvider interface has a single member, GetFormat, which is responsible for returning the object that provides formatting information. .NET には 3 つIFormatProviderカルチャに固有の書式を提供する実装。.NET has three IFormatProvider implementations that provide culture-specific formatting:

カスタムの書式設定操作Custom formatting operations

いずれかのオーバー ロードを呼び出すことができます、Formatメソッドを持つ、provider型のパラメーターIFormatProviderカスタムの書式設定操作を実行します。You can also call the any of the overloads of the Format method that have a provider parameter of type IFormatProvider to perform custom formatting operations. たとえば、id 番号、または電話番号として整数をフォーマットする可能性があります。For example, you could format an integer as an identification number or as a telephone number. カスタム書式設定を実行する、provider引数は、両方を実装する必要があります、IFormatProviderICustomFormatterインターフェイス。To perform custom formatting, your provider argument must implement both the IFormatProvider and ICustomFormatter interfaces. ときに、Formatメソッドに渡されます、ICustomFormatter実装として、provider引数、Formatメソッドの呼び出し、IFormatProvider.GetFormat実装型のオブジェクトを要求してICustomFormatterWhen the Format method is passed an ICustomFormatter implementation as the provider argument, the Format method calls its IFormatProvider.GetFormat implementation and requests an object of type ICustomFormatter. 呼び出して、返されたICustomFormatterオブジェクトのFormatする複合文字列の各書式項目の書式設定メソッドに渡されます。It then calls the returned ICustomFormatter object's Format method to format each format item in the composite string passed to it.

カスタムの書式設定ソリューションを提供する詳細については、次を参照してください。方法: 定義と使用のカスタム数値書式プロバイダーICustomFormatterします。For more information about providing custom formatting solutions, see How to: Define and Use Custom Numeric Format Providers and ICustomFormatter. カスタム番号の書式設定された整数に変換する例について、次を参照してください。例: カスタムの書式設定操作します。For an example that converts integers to formatted custom numbers, see Example: A custom formatting operation. 符号なしバイトをローマ数字に変換する例について、次を参照してください。例:、切片プロバイダーおよびフォーマッタのローマ数字します。For an example that converts unsigned bytes to Roman numerals, see Example: An intercept provider and Roman numeral formatter.

例: カスタム書式設定操作Example: A custom formatting operation

この例では、フォーム x-xxxxx-xx で顧客アカウント番号として整数値を書式設定する書式プロバイダーを定義します。This example defines a format provider that formats an integer value as a customer account number in the form x-xxxxx-xx.

using namespace System;

ref class CustomerFormatter : IFormatProvider, ICustomFormatter
{
public:
   virtual Object^ GetFormat(Type^ formatType) 
   {
      if (formatType == ICustomFormatter::typeid)        
         return this; 
      else 
         return nullptr; 
   }
   
   virtual String^ Format(String^ format, 
	               Object^ arg, 
	               IFormatProvider^ formatProvider) 
   {                       
      if (! this->Equals(formatProvider))
      {
         return nullptr;
      }
      else
      {
         if (String::IsNullOrEmpty(format)) 
            format = "G";
         
         String^ customerString = arg->ToString();
         if (customerString->Length < 8)
            customerString = customerString->PadLeft(8, '0');
         
         format = format->ToUpper();
         if (format == L"G") 
               return customerString->Substring(0, 1) + "-" +
                                     customerString->Substring(1, 5) + "-" +
                                     customerString->Substring(6);
         else if (format == L"S")                          
               return customerString->Substring(0, 1) + "/" +
                                     customerString->Substring(1, 5) + "/" +
                                     customerString->Substring(6);
         else if (format == L"P")
               return customerString->Substring(0, 1) + "." +
                                     customerString->Substring(1, 5) + "." +
                                     customerString->Substring(6);
         else
               throw gcnew FormatException( 
                         String::Format("The '{0}' format specifier is not supported.", format));
         }
    }   
};

void main()
{
   int acctNumber = 79203159;
   Console::WriteLine(String::Format(gcnew CustomerFormatter, "{0}", acctNumber));
   Console::WriteLine(String::Format(gcnew CustomerFormatter, "{0:G}", acctNumber));
   Console::WriteLine(String::Format(gcnew CustomerFormatter, "{0:S}", acctNumber));
   Console::WriteLine(String::Format(gcnew CustomerFormatter, "{0:P}", acctNumber));
   try {
      Console::WriteLine(String::Format(gcnew CustomerFormatter, "{0:X}", acctNumber));
   }
   catch (FormatException^ e) {
      Console::WriteLine(e->Message);
   }
}
// The example displays the following output:
//       7-92031-59
//       7-92031-59
//       7/92031/59
//       7.92031.59
//       The 'X' format specifier is not supported.
using System;

public class TestFormatter
{
   public static void Main()
   {
      int acctNumber = 79203159;
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:G}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:S}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:P}", acctNumber));
      try {
         Console.WriteLine(String.Format(new CustomerFormatter(), "{0:X}", acctNumber));
      }
      catch (FormatException e) {
         Console.WriteLine(e.Message);
      }
   }
}

public class CustomerFormatter : IFormatProvider, ICustomFormatter
{
   public object GetFormat(Type formatType) 
   {
      if (formatType == typeof(ICustomFormatter))        
         return this; 
      else
         return null;
   }
   
   public string Format(string format, 
	                     object arg, 
	                     IFormatProvider formatProvider) 
   {                       
      if (! this.Equals(formatProvider))
      {
         return null;
      }
      else
      {
         if (String.IsNullOrEmpty(format)) 
            format = "G";
         
         string customerString = arg.ToString();
         if (customerString.Length < 8)
            customerString = customerString.PadLeft(8, '0');
         
         format = format.ToUpper();
         switch (format)
         {
            case "G":
               return customerString.Substring(0, 1) + "-" +
                                     customerString.Substring(1, 5) + "-" +
                                     customerString.Substring(6);
            case "S":                          
               return customerString.Substring(0, 1) + "/" +
                                     customerString.Substring(1, 5) + "/" +
                                     customerString.Substring(6);
            case "P":                          
               return customerString.Substring(0, 1) + "." +
                                     customerString.Substring(1, 5) + "." +
                                     customerString.Substring(6);
            default:
               throw new FormatException( 
                         String.Format("The '{0}' format specifier is not supported.", format));
         }
      }   
   }
}
// The example displays the following output:
//       7-92031-59
//       7-92031-59
//       7/92031/59
//       7.92031.59
//       The 'X' format specifier is not supported.
Module TestFormatter
   Public Sub Main()
      Dim acctNumber As Integer = 79203159
      Console.WriteLine(String.Format(New CustomerFormatter, "{0}", acctNumber))
      Console.WriteLine(String.Format(New CustomerFormatter, "{0:G}", acctNumber))
      Console.WriteLine(String.Format(New CustomerFormatter, "{0:S}", acctNumber))
      Console.WriteLine(String.Format(New CustomerFormatter, "{0:P}", acctNumber))
      Try
         Console.WriteLine(String.Format(New CustomerFormatter, "{0:X}", acctNumber))
      Catch e As FormatException
         Console.WriteLine(e.Message)
      End Try   
   End Sub
End Module

Public Class CustomerFormatter : Implements IFormatProvider, ICustomFormatter
   Public Function GetFormat(type As Type) As Object  _
                   Implements IFormatProvider.GetFormat
      If type Is GetType(ICustomFormatter) Then
         Return Me
      Else
         Return Nothing
      End If
   End Function
   
   Public Function Format(fmt As String, _
	                       arg As Object, _
	                       formatProvider As IFormatProvider) As String _
	                Implements ICustomFormatter.Format
      If Not Me.Equals(formatProvider) Then
         Return Nothing
      Else
         If String.IsNullOrEmpty(fmt) Then fmt = "G"
         
         Dim customerString As String = arg.ToString()
         if customerString.Length < 8 Then _
            customerString = customerString.PadLeft(8, "0"c)
         
         Select Case fmt
            Case "G"
               Return customerString.Substring(0, 1) & "-" & _
                                     customerString.Substring(1, 5) & "-" & _
                                     customerString.Substring(6)
            Case "S"                         
               Return customerString.Substring(0, 1) & "/" & _
                                     customerString.Substring(1, 5) & "/" & _
                                     customerString.Substring(6)
            Case "P"
               Return customerString.Substring(0, 1) & "." & _
                                     customerString.Substring(1, 5) & "." & _
                                     customerString.Substring(6)
            Case Else
               Throw New FormatException( _
                         String.Format("The '{0}' format specifier is not supported.", fmt))
         End Select                                                     
      End If   
   End Function
End Class
' The example displays the following output:
'       7-92031-59
'       7-92031-59
'       7/92031/59
'       7.92031.59
'       The 'X' format specifier is not supported.

例: 切片プロバイダーおよびフォーマッタのローマ数字Example: An intercept provider and Roman numeral formatter

この例では、実装するカスタム書式プロバイダーを定義します。、ICustomFormatterIFormatProviderインターフェイスを 2 つの操作を行います。This example defines a custom format provider that implements the ICustomFormatter and IFormatProvider interfaces to do two things:

  • 渡されるパラメーターが表示されます、ICustomFormatter.Format実装します。It displays the parameters passed to its ICustomFormatter.Format implementation. これにより、どのようなパラメーターを表示する動き、Format(IFormatProvider, String, Object[])メソッドは書式を設定しようとするオブジェクトごとにカスタムの書式設定の実装に渡します。This enables us to see what parameters the Format(IFormatProvider, String, Object[]) method is passing to the custom formatting implementation for each object that it tries to format. これは、アプリケーションをデバッグするときに役立ちます。This can be useful when you're debugging your application.

  • 書式設定するオブジェクトが"R"標準書式指定文字列を使用して書式設定される符号なしバイト値の場合は、カスタム フォーマッタ ローマ数字として、数値の書式設定します。If the object to be formatted is an unsigned byte value that is to be formatted by using the "R" standard format string, the custom formatter formats the numeric value as a Roman numeral.

using namespace System;
using namespace System::Globalization;

ref class InterceptProvider : IFormatProvider, ICustomFormatter
{
public:
   virtual Object^ GetFormat(Type^ formatType)
   {
      if (formatType == ICustomFormatter::typeid)   
         return this;
      else
         return nullptr;
   }
   
   virtual String^ Format(String^ format, Object^ obj, IFormatProvider^ provider) 
   {
      // Display information about method call.
      String^ formatString = format != nullptr ? format : "<null>";
      Console::WriteLine("Provider: {0}, Object: {1}, Format String: {2}",
                        provider, obj != nullptr ? obj : "<null>", formatString);
                        
      if (obj == nullptr) return String::Empty;
            
      // If this is a byte and the "R" format string, format it with Roman numerals.
      if (obj->GetType() == Byte::typeid && formatString->ToUpper()->Equals("R")) {
         Byte value = (Byte) obj;
         int remainder;
         int result;
         String^ returnString = String::Empty;

         // Get the hundreds digit(s)
         result = Math::DivRem(value, 100, remainder);
         if (result > 0)  
            returnString = gcnew String('C', result);
         value = (Byte) remainder;
         // Get the 50s digit
         result = Math::DivRem(value, 50, remainder);
         if (result == 1)
            returnString += "L";
         value = (Byte) remainder;
         // Get the tens digit.
         result = Math::DivRem(value, 10, remainder);
         if (result > 0)
            returnString += gcnew String('X', result);
         value = (Byte) remainder; 
         // Get the fives digit.
         result = Math::DivRem(value, 5, remainder);
         if (result > 0)
            returnString += "V";
         value = (Byte) remainder;
         // Add the ones digit.
         if (remainder > 0) 
            returnString += gcnew String('I', remainder);
         
         // Check whether we have too many X characters.
         int pos = returnString->IndexOf("XXXX");
         if (pos >= 0) {
            int xPos = returnString->IndexOf("L"); 
            if ((xPos >= 0) & (xPos == pos - 1))
               returnString = returnString->Replace("LXXXX", "XC");
            else
               returnString = returnString->Replace("XXXX", "XL");   
         }
         // Check whether we have too many I characters
         pos = returnString->IndexOf("IIII");
         if (pos >= 0)
            if (returnString->IndexOf("V") >= 0)
               returnString = returnString->Replace("VIIII", "IX");
            else
               returnString = returnString->Replace("IIII", "IV");    

         return returnString; 
      }   

      // Use default for all other formatting.
      if (obj->GetType() == IFormattable::typeid)
         return ((IFormattable^) obj)->ToString(format, CultureInfo::CurrentCulture);
      else
         return obj->ToString();
   }
};

void main()
{
   int n = 10;
   double value = 16.935;
   DateTime day = DateTime::Now;
   InterceptProvider^ provider = gcnew InterceptProvider();
   Console::WriteLine(String::Format(provider, "{0:N0}: {1:C2} on {2:d}\n", n, value, day));
   Console::WriteLine(String::Format(provider, "{0}: {1:F}\n", "Today: ", 
                                    (DayOfWeek) DateTime::Now.DayOfWeek));
   Console::WriteLine(String::Format(provider, "{0:X}, {1}, {2}\n", 
                                    (Byte) 2, (Byte) 12, (Byte) 199));
   Console::WriteLine(String::Format(provider, "{0:R}, {1:R}, {2:R}\n", 
                                    (Byte) 2, (Byte) 12, (Byte) 199));
}
// The example displays the following output:
//    Provider: InterceptProvider, Object: 10, Format String: N0
//    Provider: InterceptProvider, Object: 16.935, Format String: C2
//    Provider: InterceptProvider, Object: 1/31/2013 6:10:28 PM, Format String: d
//    10: $16.94 on 1/31/2013
//    
//    Provider: InterceptProvider, Object: Today: , Format String: <null>
//    Provider: InterceptProvider, Object: Thursday, Format String: F
//    Today: : Thursday
//    
//    Provider: InterceptProvider, Object: 2, Format String: X
//    Provider: InterceptProvider, Object: 12, Format String: <null>
//    Provider: InterceptProvider, Object: 199, Format String: <null>
//    2, 12, 199
//    
//    Provider: InterceptProvider, Object: 2, Format String: R
//    Provider: InterceptProvider, Object: 12, Format String: R
//    Provider: InterceptProvider, Object: 199, Format String: R
//    II, XII, CXCIX
using System;
using System.Globalization;

public class InterceptProvider : IFormatProvider, ICustomFormatter
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(ICustomFormatter))
         return this;
      else
         return null;
   }
   
   public string Format(String format, Object obj, IFormatProvider provider) 
   {
      // Display information about method call.
      string formatString = format ?? "<null>";
      Console.WriteLine("Provider: {0}, Object: {1}, Format String: {2}",
                        provider.GetType().Name, obj ?? "<null>", formatString);
                        
      if (obj == null) return String.Empty;
            
      // If this is a byte and the "R" format string, format it with Roman numerals.
      if (obj is Byte && formatString.ToUpper().Equals("R")) {
         Byte value = (Byte) obj;
         int remainder;
         int result;
         String returnString = String.Empty;

         // Get the hundreds digit(s)
         result = Math.DivRem(value, 100, out remainder);
         if (result > 0)  
            returnString = new String('C', result);
         value = (Byte) remainder;
         // Get the 50s digit
         result = Math.DivRem(value, 50, out remainder);
         if (result == 1)
            returnString += "L";
         value = (Byte) remainder;
         // Get the tens digit.
         result = Math.DivRem(value, 10, out remainder);
         if (result > 0)
            returnString += new String('X', result);
         value = (Byte) remainder; 
         // Get the fives digit.
         result = Math.DivRem(value, 5, out remainder);
         if (result > 0)
            returnString += "V";
         value = (Byte) remainder;
         // Add the ones digit.
         if (remainder > 0) 
            returnString += new String('I', remainder);
         
         // Check whether we have too many X characters.
         int pos = returnString.IndexOf("XXXX");
         if (pos >= 0) {
            int xPos = returnString.IndexOf("L"); 
            if (xPos >= 0 & xPos == pos - 1)
               returnString = returnString.Replace("LXXXX", "XC");
            else
               returnString = returnString.Replace("XXXX", "XL");   
         }
         // Check whether we have too many I characters
         pos = returnString.IndexOf("IIII");
         if (pos >= 0)
            if (returnString.IndexOf("V") >= 0)
               returnString = returnString.Replace("VIIII", "IX");
            else
               returnString = returnString.Replace("IIII", "IV");    

         return returnString; 
      }   

      // Use default for all other formatting.
      if (obj is IFormattable)
         return ((IFormattable) obj).ToString(format, CultureInfo.CurrentCulture);
      else
         return obj.ToString();
   }
}

public class Example
{
   public static void Main()
   {
      int n = 10;
      double value = 16.935;
      DateTime day = DateTime.Now;
      InterceptProvider provider = new InterceptProvider();
      Console.WriteLine(String.Format(provider, "{0:N0}: {1:C2} on {2:d}\n", n, value, day));
      Console.WriteLine(String.Format(provider, "{0}: {1:F}\n", "Today: ", 
                                      (DayOfWeek) DateTime.Now.DayOfWeek));
      Console.WriteLine(String.Format(provider, "{0:X}, {1}, {2}\n", 
                                      (Byte) 2, (Byte) 12, (Byte) 199));
      Console.WriteLine(String.Format(provider, "{0:R}, {1:R}, {2:R}\n", 
                                      (Byte) 2, (Byte) 12, (Byte) 199));
   }
}
// The example displays the following output:
//    Provider: InterceptProvider, Object: 10, Format String: N0
//    Provider: InterceptProvider, Object: 16.935, Format String: C2
//    Provider: InterceptProvider, Object: 1/31/2013 6:10:28 PM, Format String: d
//    10: $16.94 on 1/31/2013
//    
//    Provider: InterceptProvider, Object: Today: , Format String: <null>
//    Provider: InterceptProvider, Object: Thursday, Format String: F
//    Today: : Thursday
//    
//    Provider: InterceptProvider, Object: 2, Format String: X
//    Provider: InterceptProvider, Object: 12, Format String: <null>
//    Provider: InterceptProvider, Object: 199, Format String: <null>
//    2, 12, 199
//    
//    Provider: InterceptProvider, Object: 2, Format String: R
//    Provider: InterceptProvider, Object: 12, Format String: R
//    Provider: InterceptProvider, Object: 199, Format String: R
//    II, XII, CXCIX
Imports System.Globalization

Public Class InterceptProvider : Implements IFormatProvider, ICustomFormatter
   Public Function GetFormat(formatType As Type) As Object _
         Implements IFormatProvider.GetFormat
      If formatType Is GetType(ICustomFormatter) Then
         Return Me
      Else
         Return Nothing
      End If
   End Function
   
   Public Function Format(fmt As String, obj As Object, provider As IFormatProvider) As String _
         Implements ICustomFormatter.Format

      Dim formatString As String = If(fmt IsNot Nothing, fmt, "<null>")
      Console.WriteLine("Provider: {0}, Object: {1}, Format String: {2}",
                        provider, If(obj IsNot Nothing, obj, "<null>"), formatString)

      If obj Is Nothing Then Return String.Empty
            
      ' If this is a byte and the "R" format string, format it with Roman numerals.
      If TypeOf(obj) Is Byte AndAlso formatString.ToUpper.Equals("R") Then
         Dim value As Byte = CByte(obj)
         Dim remainder As Integer
         Dim result As Integer
         Dim returnString As String = String.Empty

         ' Get the hundreds digit(s)
         result = Math.DivRem(value, 100, remainder)
         If result > 0 Then returnString = New String("C"c, result)
         value = CByte(remainder)
         ' Get the 50s digit
         result = Math.DivRem(value, 50, remainder)
         If result = 1 Then returnString += "L"
         value = CByte(remainder)
         ' Get the tens digit.
         result = Math.DivRem(value, 10, remainder)
         If result > 0 Then returnString += New String("X"c, result)
         value = CByte(remainder) 
         ' Get the fives digit.
         result = Math.DivRem(value, 5, remainder)
         If result > 0 Then returnString += "V"
         value = CByte(remainder)
         ' Add the ones digit.
         If remainder > 0 Then returnString += New String("I"c, remainder)
         
         ' Check whether we have too many X characters.
         Dim pos As Integer = returnString.IndexOf("XXXX")
         If pos >= 0 Then
            Dim xPos As Integer = returnString.IndexOf("L") 
            If xPos >= 0 And xPos = pos - 1 Then
               returnString = returnString.Replace("LXXXX", "XC")
            Else
               returnString = returnString.Replace("XXXX", "XL")   
            End If         
         End If
         ' Check whether we have too many I characters
         pos = returnString.IndexOf("IIII")
         If pos >= 0 Then
            If returnString.IndexOf("V") >= 0 Then
               returnString = returnString.Replace("VIIII", "IX")
            Else
               returnString = returnString.Replace("IIII", "IV")    
            End If
         End If
         Return returnString 
      End If   

      ' Use default for all other formatting.
      If obj Is GetType(IFormattable)
         Return CType(obj, IFormattable).ToString(fmt, CultureInfo.CurrentCulture)
      Else
         Return obj.ToString()
      End If
   End Function
End Class

Module Example
   Public Sub Main()
      Dim n As Integer = 10
      Dim value As Double = 16.935
      Dim day As DateTime = Date.Now
      Dim provider As New InterceptProvider()
      Console.WriteLine(String.Format(provider, "{0:N0}: {1:C2} on {2:d}", n, value, day))
      Console.WriteLine()
      Console.WriteLine(String.Format(provider, "{0}: {1:F}", "Today", 
                                      CType(Date.Now.DayOfWeek, DayOfWeek)))
      Console.WriteLine()
      Console.WriteLine(String.Format(provider, "{0:X}, {1}, {2}\n", 
                                      CByte(2), CByte(12), CByte(199)))
      Console.WriteLine()
      Console.WriteLine(String.Format(provider, "{0:R}, {1:R}, {2:R}", 
                                      CByte(2), CByte(12), CByte(199)))
   End Sub
End Module
' The example displays the following output:
'    Provider: InterceptProvider, Object: 10, Format String: N0
'    Provider: InterceptProvider, Object: 16.935, Format String: C2
'    Provider: InterceptProvider, Object: 1/31/2013 6:10:28 PM, Format String: d
'    10: $16.94 on 1/31/2013
'    
'    Provider: InterceptProvider, Object: Today: , Format String: <null>
'    Provider: InterceptProvider, Object: Thursday, Format String: F
'    Today: : Thursday
'    
'    Provider: InterceptProvider, Object: 2, Format String: X
'    Provider: InterceptProvider, Object: 12, Format String: <null>
'    Provider: InterceptProvider, Object: 199, Format String: <null>
'    2, 12, 199
'    
'    Provider: InterceptProvider, Object: 2, Format String: R
'    Provider: InterceptProvider, Object: 12, Format String: R
'    Provider: InterceptProvider, Object: 199, Format String: R
'    II, XII, CXCIX

String.Format の Q & AString.Format Q & A

なぜ文字列補間を呼び出し、String.Formatメソッドでしょうか。Why do you recommend string interpolation over calls to the String.Format method?

文字列補間は。String interpolation is:

  • 柔軟です。More flexible. これは、複合書式指定をサポートするメソッドの呼び出しを必要とせず任意の文字列で使用できます。It can be used in any string without requiring a call to a method that supports composite formatting. 呼び出す必要が、それ以外の場合、Formatメソッドまたは別のメソッドなどの複合書式指定をサポートするConsole.WriteLineまたはStringBuilder.AppendFormatします。Otherwise, you have to call the Format method or another method that supports composite formatting, such as Console.WriteLine or StringBuilder.AppendFormat.

  • 読みやすくします。More readable. 式を文字列に挿入するには、引数リストではなく、挿入式が表示されたらため、補間文字列はコードとコードを読み取るにははるかに簡単です。Because the expression to insert into a string appears in the interpolated expression rather than in a argument list, interpolated strings are far easier to code and to read. 大きいの読みやすさのため挿入文字列は、複合書式指定メソッドを呼び出すだけでなくを置き換えることができますが、文字列連結操作で使用してより簡潔でわかりやすいコードを生成することができますもします。Because of their greater readability, interpolated strings can replace not only calls to composite format methods, but they can also be used in string concatenation operations to produce more concise, clearer code.

次の 2 つのコード例の比較では、文字列の連結と複合書式指定メソッドの呼び出しを挿入文字列の上の優位性を示しています。A comparison of the following two code examples illustrates the superiority of interpolated strings over string concatenation and calls to composite formatting methods. 次の例では、複数の文字列連結操作の使用には、冗長で読みハード コードが生成されます。The use of multiple string concatenation operations in the following example produces verbose and hard-to-read code.

using System;

public class Example
{
   public static void Main()
   {
      string[] names = { "Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma" };
      string output = names[0] + ", " + names[1] + ", " + names[2] + ", " + 
                      names[3] + ", " + names[4] + ", " + names[5] + ", " + 
                      names[6];  
    
      output += "\n";  
      var date = DateTime.Now;
      output += String.Format("It is {0:t} on {0:d}. The day of the week is {1}.", 
                              date, date.DayOfWeek);
      Console.WriteLine(output);                           
   }
}
// The example displays the following output:
//     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
//     It is 10:29 AM on 1/8/2018. The day of the week is Monday.


Module Example
   Public Sub Main()
      Dim names = { "Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma" }
      Dim output = names(0) + ", " + names(1) + ", " + names(2) + ", " + 
                   names(3) + ", " + names(4) + ", " + names(5) + ", " + 
                   names(6)  
    
      output += vbCrLf  
      Dim dat = DateTime.Now
      output += String.Format("It is {0:t} on {0:d}. The day of the week is {1}.", 
                              dat, dat.DayOfWeek)
      Console.WriteLine(output)                           
   End Sub
End Module
' The example displays the following output:
'     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
'     It is 10:29 AM on 1/8/2018. The day of the week is Monday.


これに対し、次の例で挿入文字列の使用が文字列の連結ステートメントとへの呼び出しよりもはるかにわかりやすくより簡潔なコードを生成、Format前の例のメソッド。In contrast, the use of interpolated strings in the following example produce much clearer, more concise code than the string concatenation statement and the call to the Format method in the previous example.

using System;

public class Example
{
   public static void Main()
   {
      string[] names = { "Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma" };
      string output = $"{names[0]}, {names[1]}, {names[2]}, {names[3]}, {names[4]}, " + 
                      $"{names[5]}, {names[6]}";  
    
      var date = DateTime.Now;
      output += $"\nIt is {date:t} on {date:d}. The day of the week is {date.DayOfWeek}.";
      Console.WriteLine(output);                           
   }
}
// The example displays the following output:
//     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
//     It is 10:29 AM on 1/8/2018. The day of the week is Monday.


Module Example
   Public Sub Main()
      Dim names = { "Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma" }
      Dim output = $"{names(0)}, {names(1)}, {names(2)}, {names(3)}, {names(4)}, " + 
                   $"{names(5)}, {names(6)}"  
    
      Dim dat = DateTime.Now
      output += $"{vbCrLf}It is {dat:t} on {dat:d}. The day of the week is {dat.DayOfWeek}." 
      Console.WriteLine(output)                           
   End Sub
End Module
' The example displays the following output:
'     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
'     It is 10:29 AM on 1/8/2018. The day of the week is Monday.


書式指定項目で使用できる定義済み書式指定文字列の一覧はどこで確認できますか。Where can I find a list of the predefined format strings that can be used with format items?

書式項目を置換する結果文字列の配置を制御する方法は?How do I control the alignment of the result strings that replace format items?

書式指定項目の一般的な構文です。The general syntax of a format item is:

{index[,alignment][: formatString]}  

場所配置フィールドの幅を定義する符号付き整数します。where alignment is a signed integer that defines the field width. この値が負の場合は、フィールド内のテキストは左揃えです。If this value is negative, text in the field is left-aligned. 正の場合は、テキストは右揃えです。If it is positive, text is right-aligned.

小数点区切り文字の後の桁数が制御する方法How do I control the number of digits after the decimal separator?

すべて標準数値書式指定文字列"D"(これは、整数のみを使用)、"G"、"R"を除くし、"X"は、結果の文字列の小数点以下桁数を定義する有効桁数指定子を許可します。All standard numeric format strings except "D" (which is used with integers only), "G", "R", and "X" allow a precision specifier that defines the number of decimal digits in the result string. 次の例では、標準数値書式指定文字列を使用して、結果の文字列の 10 進数字の数を制御します。The following example uses standard numeric format strings to control the number of decimal digits in the result string.

using System;

public class Example
{
   public static void Main()
   {
      object[] values = { 1603, 1794.68235, 15436.14 };
      string result;
      foreach (var value in values) {
         result = String.Format("{0,12:C2}   {0,12:E3}   {0,12:F4}   {0,12:N3}  {1,12:P2}\n",
                                Convert.ToDouble(value), Convert.ToDouble(value) / 10000);
         Console.WriteLine(result);
      }                           
   }
}
// The example displays output like the following:
//       $1,603.00     1.603E+003      1603.0000      1,603.000       16.03 %
//    
//       $1,794.68     1.795E+003      1794.6824      1,794.682       17.95 %
//    
//      $15,436.14     1.544E+004     15436.1400     15,436.140      154.36 %
Module Example
   Public Sub Main()
      Dim values() As Object = { 1603, 1794.68235, 15436.14 }
      Dim result As String
      For Each value In values
         result = String.Format("{0,12:C2}   {0,12:E3}   {0,12:F4}   {0,12:N3}  {1,12:P2}",
                                value, CDbl(value) / 10000)
         Console.WriteLine(result) 
         Console.WriteLine()
      Next                             
   End Sub
End Module
' The example displays the following output:
'       $1,603.00     1.603E+003      1603.0000      1,603.000       16.03 %
'    
'       $1,794.68     1.795E+003      1794.6824      1,794.682       17.95 %
'    
'      $15,436.14     1.544E+004     15436.1400     15,436.140      154.36 %

使用している場合、カスタム数値書式指定文字列結果の文字列で、次の例の 10 進数字の数を制御する、「0」書式指定子を使用します。If you're using a custom numeric format string, use the "0" format specifier to control the number of decimal digits in the result string, as the following example shows.

using System;

public class Example
{
   public static void Main()
   {
      decimal value = 16309.5436m;
      string result = String.Format("{0,12:#.00000} {0,12:0,000.00} {0,12:000.00#}", 
                                    value);
      Console.WriteLine(result);
   }
}
// The example displays the following output:
//        16309.54360    16,309.54    16309.544
Module Example
   Public Sub Main()
      Dim value As Decimal = 16309.5436d
      Dim result As String = String.Format("{0,12:#.00000} {0,12:0,000.00} {0,12:000.00#}", 
                                           value)
      Console.WriteLine(result)
   End Sub
End Module
' The example displays the following output:
'    16309.54360    16,309.54    16309.544

整数の桁の数を制御する方法は?How do I control the number of integral digits?

既定では、書式設定操作は 0 以外の整数の桁のみを表示します。By default, formatting operations only display non-zero integral digits. 整数の書式を設定する場合は、以下の桁数を制御するため、精度指定子"D"と"X"標準書式指定文字列を使用できます。If you are formatting integers, you can use a precision specifier with the "D" and "X" standard format strings to control the number of digits.

using System;

public class Example
{
   public static void Main()
   {
      int value = 1326;
      string result = String.Format("{0,10:D6} {0,10:X8}", value);
      Console.WriteLine(result);
   }
}
// The example displays the following output:
//     001326   0000052E
Module Example
   Public Sub Main()
      Dim value As Integer = 1326
      Dim result As String = String.Format("{0,10:D6} {0,10:X8}", value)
      Console.WriteLine(result)
   End Sub
End Module
' The example displays the following output:
'       001326   0000052E

「0」を使用して整数の桁の数を指定して結果の文字列を生成するために、整数または浮動小数点数に先行するゼロを埋め込むカスタム数値書式指定子、次の例に示すようにします。You can pad an integer or floating-point number with leading zeros to produce a result string with a specified number of integral digits by using the "0" custom numeric format specifier, as the following example shows.

using System;

public class Example
{
   public static void Main()
   {
      int value = 16342;
      string result = String.Format("{0,18:00000000} {0,18:00000000.000} {0,18:000,0000,000.0}", 
                                    value);
      Console.WriteLine(result);
   }
}
// The example displays the following output:
//           00016342       00016342.000    0,000,016,342.0
Module Example
   Public Sub Main()
      Dim value As Integer = 16342
      Dim result As String = String.Format("{0,18:00000000} {0,18:00000000.000} {0,18:000,0000,000.0}", 
                                           value)
      Console.WriteLine(result)
   End Sub
End Module
' The example displays the following output:
'           00016342       00016342.000    0,000,016,342.0

形式の一覧で項目の数を含めることができますか。How many items can I include in the format list?

事実上制限はありません。There is no practical limit. 2 番目のパラメーター、Format(IFormatProvider, String, Object[])メソッドがタグ付け、ParamArrayAttribute属性には、コンマ区切りのリストか、形式のリストとしてオブジェクトの配列を含めることができます。The second parameter of the Format(IFormatProvider, String, Object[]) method is tagged with the ParamArrayAttribute attribute, which allows you to include either a delimited list or an object array as your format list.

リテラル中かっこを含める方法 ("{"と"}")、結果の文字列のでしょうか。How do I include literal braces ("{" and "}") in the result string?

たとえば、どのようにして、次のメソッド呼び出しからスロー、FormatException例外でしょうか。For example, how do you prevent the following method call from throwing a FormatException exception?

result = String.Format("The text has {0} '{' characters and {1} '}' characters.",
                       nOpen, nClose);
result = String.Format("The text has {0} '{' characters and {1} '}' characters.",
                       nOpen, nClose)

1 つの開始または右中かっこは、常に先頭または末尾の書式指定項目として解釈されます。A single opening or closing brace is always interpreted as the beginning or end of a format item. どおりに解釈するのにそれをエスケープする必要があります。To be interpreted literally, it must be escaped. もう 1 つの中かっこを追加することで、かっこをエスケープする ("{{"と"}}"の代わりに"{"と"}")、次のメソッド呼び出しで。You escape a brace by adding another brace ("{{" and "}}" instead of "{" and "}"), as in the following method call:

string result;
int nOpen = 1;
int nClose = 2;
result = String.Format("The text has {0} '{{' characters and {1} '}}' characters.",
                       nOpen, nClose);
Console.WriteLine(result);
result = String.Format("The text has {0} '{{' characters and {1} '}}' characters.",
                       nOpen, nClose)

ただし、さらにエスケープされた中かっこは簡単に誤ったです。However, even escaped braces are easily misinterpreted. 形式の一覧で中かっこを含めるし、書式項目を使用して、次の例のように、結果文字列に挿入することをお勧めします。We recommend that you include braces in the format list and use format items to insert them in the result string, as the following example shows.

string result;
int nOpen = 1;
int nClose = 2;
result = String.Format("The text has {0} '{1}' characters and {2} '{3}' characters.",
                       nOpen, "{", nClose, "}");
Console.WriteLine(result);
result = String.Format("The text has {0} '{1}' characters and {2} '{3}' characters.",
                       nOpen, "{", nClose, "}")

String.Format メソッドの呼び出しが、FormatException をスローする理由Why does my call to the String.Format method throw a FormatException?

例外の最も一般的な原因は、書式指定項目のインデックスが、[形式] リスト内のオブジェクトに対応していません。The most common cause of the exception is that the index of a format item doesn't correspond to an object in the format list. 通常を書式指定項目のインデックスを misnumbered したか、形式の一覧でオブジェクトを含める忘れてしまったことを示します。Usually this indicates that you've misnumbered the indexes of format items or you've forgotten to include an object in the format list. 文字をエスケープ解除されたの左または右中かっこを含めるしようとしてもがスローされます、FormatExceptionします。Attempting to include an unescaped left or right brace character also throws a FormatException. 場合によっては、例外は、入力ミス; の結果たとえば、よくある間違いはミスは"["(左角かっこ) の代わりに"{0}"(左中かっこ)。Occasionally, the exception is the result of a typo; for example, a typical mistake is to mistype "[" (the left bracket) instead of "{" (the left brace).

場合 Format(System.IFormatProvider,System.String,System.Object[]) メソッドでは、理由は、コード例外をスロー配列を使用する場合、パラメーター配列をサポートしていますか。If the Format(System.IFormatProvider,System.String,System.Object[]) method supports parameter arrays, why does my code throw an exception when I use an array?

たとえば、次のコードがスローされます、FormatException例外。For example, the following code throws a FormatException exception:

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      int[]  numbers = new int[4];
      int total = 0;
      for (int ctr = 0; ctr <= 2; ctr++) {
         int number = rnd.Next(1001);
         numbers[ctr] = number;
         total += number;
      }   
      numbers[3] = total;
      Console.WriteLine("{0} + {1} + {2} = {3}", numbers);   
   }
}
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim rnd As New Random()
      Dim numbers(3) As Integer
      Dim total As Integer = 0
      For ctr = 0 To 2
         Dim number As Integer = rnd.Next(1001)
         numbers(ctr) = number
         total += number
      Next
      numbers(3) = total
      Console.WriteLine("{0} + {1} + {2} = {3}", numbers)   
   End Sub
End Module

これは、コンパイラのオーバー ロードの解決の問題です。This is a problem of compiler overload resolution. 呼び出すために、1 つの引数として、整数の配列を扱いますが、コンパイラでは、整数の配列をオブジェクト配列に変換することはできません、ため、Format(String, Object)メソッド。Because the compiler cannot convert an array of integers to an object array, it treats the integer array as a single argument, so it calls the Format(String, Object) method. 4 つの書式項目が形式の一覧で 1 つの項目のみがあるために、例外がスローされます。The exception is thrown because there are four format items but only a single item in the format list.

Visual Basic や c# のどちらで整数の配列をオブジェクト配列に変換できるため、呼び出す前に自分で変換を実行する必要がある、Format(String, Object[])メソッド。Because neither Visual Basic nor C# can convert an integer array to an object array, you have to perform the conversion yourself before calling the Format(String, Object[]) method. 次の例では、1 つの実装を提供します。The following example provides one implementation.

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      int[]  numbers = new int[4];
      int total = 0;
      for (int ctr = 0; ctr <= 2; ctr++) {
         int number = rnd.Next(1001);
         numbers[ctr] = number;
         total += number;
      }   
      numbers[3] = total;
      object[] values = new object[numbers.Length];
      numbers.CopyTo(values, 0);
      Console.WriteLine("{0} + {1} + {2} = {3}", values);   
   }
}
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim rnd As New Random()
      Dim numbers(3) As Integer
      Dim total As Integer = 0
      For ctr = 0 To 2
         Dim number As Integer = rnd.Next(1001)
         numbers(ctr) = number
         total += number
      Next
      numbers(3) = total
      Dim values(numbers.Length - 1) As Object
      numbers.CopyTo(values, 0) 
      Console.WriteLine("{0} + {1} + {2} = {3}", values)   
   End Sub
End Module

Format(IFormatProvider, String, Object, Object, Object) Format(IFormatProvider, String, Object, Object, Object) Format(IFormatProvider, String, Object, Object, Object) Format(IFormatProvider, String, Object, Object, Object)

文字列の書式項目を、指定した 3 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of three specified objects. パラメーターにより、カルチャに固有の書式設定情報を指定します。 An parameter supplies culture-specific formatting information.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, System::Object ^ arg0, System::Object ^ arg1, System::Object ^ arg2);
public static string Format (IFormatProvider provider, string format, object arg0, object arg1, object arg2);
static member Format : IFormatProvider * string * obj * obj * obj -> string
Public Shared Function Format (provider As IFormatProvider, format As String, arg0 As Object, arg1 As Object, arg2 As Object) As String

パラメーター

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

カルチャ固有の書式情報を提供するオブジェクト。 An object that supplies culture-specific formatting information.

arg0
Object Object Object Object

1 番目に書式設定するオブジェクト。 The first object to format.

arg1
Object Object Object Object

2 番目に書式設定するオブジェクト。 The second object to format.

arg2
Object Object Object Object

3 番目に書式設定するオブジェクト。 The third object to format.

Returns

書式項目が formatarg0、および arg1 の文字列形式に置換された arg2 のコピー。 A copy of format in which the format items have been replaced by the string representations of arg0, arg1, and arg2.

Exceptions

format が無効です。 format is invalid. - または - -or- 書式項目のインデックスが 0 より小さいか、または 2 より大きい値です。 The index of a format item is less than zero, or greater than two.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能3 つの式をその文字列表現に変換して、それらの表現を文字列に埋め込みます。This method uses the composite formatting feature to convert three expressions to their string representations and to embed those representations in a string. 変換を実行するには、カルチャ依存した書式設定またはカスタム フォーマッタを使用します。In performing the conversion, the method uses culture-sensitive formatting or a custom formatter. メソッドでは、それぞれに変換しますObject引数を文字列形式を呼び出してそのToString(IFormatProvider) メソッドまたは、書式指定項目がそのを呼び出すことによって、書式指定文字列を含む場合は、オブジェクトの対応するToString(String,IFormatProvider) メソッド。The method converts each Object argument to its string representation by calling its ToString(IFormatProvider) method or, if the object's corresponding format item includes a format string, by calling its ToString(String,IFormatProvider) method. これらのメソッドが存在しない場合は、呼び出し、オブジェクトのパラメーターなしToStringメソッド。If these methods don't exist, it calls the object's parameterless ToString method.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、カルチャに依存した書式設定またはカスタム書式設定および 1 つ以上の書式項目を含む複合書式指定文字列を提供するオブジェクトを使用して、メソッドを呼び出すことができます。Instead, you can call the method with an object that provides culture-sensitive or custom formatting and a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

Format(String, Object, Object, Object) Format(String, Object, Object, Object) Format(String, Object, Object, Object) Format(String, Object, Object, Object)

文字列の書式項目を、指定した 3 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of three specified objects.

public:
 static System::String ^ Format(System::String ^ format, System::Object ^ arg0, System::Object ^ arg1, System::Object ^ arg2);
public static string Format (string format, object arg0, object arg1, object arg2);
static member Format : string * obj * obj * obj -> string
Public Shared Function Format (format As String, arg0 As Object, arg1 As Object, arg2 As Object) As String

パラメーター

arg0
Object Object Object Object

1 番目に書式設定するオブジェクト。 The first object to format.

arg1
Object Object Object Object

2 番目に書式設定するオブジェクト。 The second object to format.

arg2
Object Object Object Object

3 番目に書式設定するオブジェクト。 The third object to format.

Returns

書式項目が formatarg0、および arg1 の文字列形式に置換された arg2 のコピー。 A copy of format in which the format items have been replaced by the string representations of arg0, arg1, and arg2.

Exceptions

format が無効です。 format is invalid. - または - -or- 書式項目のインデックスが 0 より小さいか、または 2 より大きい値です。 The index of a format item is less than zero, or greater than two.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能3 つの式の値をその文字列表現に変換して、それらの表現を文字列に埋め込みます。This method uses the composite formatting feature to convert the value of three expressions to their string representations and to embed those representations in a string.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、1 つ以上の書式項目を含む、複合書式指定文字列を指定してメソッドを呼び出すことができます。Instead, you can call the method with a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

例: 3 つの引数を書式設定Example: Formatting three arguments

この例では、Format(String, Object, Object, Object)ブール値の結果を示す文字列を作成するメソッドをAnd2 つの整数値を操作します。This example uses the Format(String, Object, Object, Object) method to create a string that illustrates the result of a Boolean And operation with two integer values. 各項目が 2 つの方法で書式設定されたために、書式指定文字列に 6 つの書式項目が含まれていますが、メソッドのパラメーター リストの 3 つだけの項目には注意してください。Note that the format string includes six format items, but the method has only three items in its parameter list, because each item is formatted in two different ways.

using namespace System;

void main()
{
   String^ formatString = "    {0,10} ({0,8:X8})\n" + 
                           "And {1,10} ({1,8:X8})\n" + 
                           "  = {2,10} ({2,8:X8})";
   int value1 = 16932;
   int value2 = 15421;
   String^ result = String::Format(formatString, 
                                   value1, value2, value1 & value2);
   Console::WriteLine(result);
}
// The example displays the following output:
//                16932 (00004224)
//       And      15421 (00003C3D)
//         =         36 (00000024)
using System;

public class Example
{
   public static void Main()
   {
      string formatString = "    {0,10} ({0,8:X8})\n" + 
                            "And {1,10} ({1,8:X8})\n" + 
                            "  = {2,10} ({2,8:X8})";
      int value1 = 16932;
      int value2 = 15421;
      string result = String.Format(formatString, 
                                    value1, value2, value1 & value2);
      Console.WriteLine(result);
   }
}
// The example displays the following output:
//                16932 (00004224)
//       And      15421 (00003C3D)
//         =         36 (00000024)
Public Module Example
   Public Sub Main()
      Dim formatString As String = "    {0,10} ({0,8:X8})" + vbCrLf +  _
                                   "And {1,10} ({1,8:X8})" + vbCrLf + _
                                   "  = {2,10} ({2,8:X8})"
      Dim value1 As Integer = 16932
      Dim value2 As Integer = 15421
      Dim result As String = String.Format(formatString, _
                                           value1, value2, value1 And value2)
      Console.WriteLine(result)                          
   End Sub
End Module
' The example displays the following output:
'                16932 (00004224)
'       And      15421 (00003C3D)
'         =         36 (00000024)
See Also

Format(IFormatProvider, String, Object, Object) Format(IFormatProvider, String, Object, Object) Format(IFormatProvider, String, Object, Object) Format(IFormatProvider, String, Object, Object)

文字列の書式項目を、指定した 2 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of two specified objects. パラメーターにより、カルチャに固有の書式情報が指定されます。 A parameter supplies culture-specific formatting information.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, System::Object ^ arg0, System::Object ^ arg1);
public static string Format (IFormatProvider provider, string format, object arg0, object arg1);
static member Format : IFormatProvider * string * obj * obj -> string
Public Shared Function Format (provider As IFormatProvider, format As String, arg0 As Object, arg1 As Object) As String

パラメーター

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

カルチャ固有の書式情報を提供するオブジェクト。 An object that supplies culture-specific formatting information.

arg0
Object Object Object Object

1 番目に書式設定するオブジェクト。 The first object to format.

arg1
Object Object Object Object

2 番目に書式設定するオブジェクト。 The second object to format.

Returns

書式項目が arg0arg1 の文字列形式に置換された format のコピー。 A copy of format in which format items are replaced by the string representations of arg0 and arg1.

Exceptions

format が無効です。 format is invalid. - または - -or- 書式項目のインデックスが 0 でも 1 でもありません。 The index of a format item is not zero or one.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能とそれらの表現を文字列に埋め込むには 2 つの式をその文字列表現に変換します。This method uses the composite formatting feature to convert two expressions to their string representations and to embed those representations in a string. 変換を実行するには、カルチャ依存した書式設定またはカスタム フォーマッタを使用します。In performing the conversion, the method uses culture-sensitive formatting or a custom formatter. メソッドでは、それぞれに変換しますObject引数を文字列形式を呼び出してそのToString(IFormatProvider) メソッドまたは、書式指定項目がそのを呼び出すことによって、書式指定文字列を含む場合は、オブジェクトの対応するToString(String,IFormatProvider) メソッド。The method converts each Object argument to its string representation by calling its ToString(IFormatProvider) method or, if the object's corresponding format item includes a format string, by calling its ToString(String,IFormatProvider) method. これらのメソッドが存在しない場合は、呼び出し、オブジェクトのパラメーターなしToStringメソッド。If these methods don't exist, it calls the object's parameterless ToString method.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、カルチャに依存した書式設定またはカスタム書式設定および 1 つ以上の書式項目を含む複合書式指定文字列を提供するオブジェクトを使用して、メソッドを呼び出すことができます。Instead, you can call the method with an object that provides culture-sensitive or custom formatting and a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

Format(String, Object, Object) Format(String, Object, Object) Format(String, Object, Object) Format(String, Object, Object)

文字列の書式項目を、指定した 2 つのオブジェクトの文字列形式に置換します。 Replaces the format items in a string with the string representation of two specified objects.

public:
 static System::String ^ Format(System::String ^ format, System::Object ^ arg0, System::Object ^ arg1);
public static string Format (string format, object arg0, object arg1);
static member Format : string * obj * obj -> string
Public Shared Function Format (format As String, arg0 As Object, arg1 As Object) As String

パラメーター

arg0
Object Object Object Object

1 番目に書式設定するオブジェクト。 The first object to format.

arg1
Object Object Object Object

2 番目に書式設定するオブジェクト。 The second object to format.

Returns

書式項目が arg0arg1 の文字列形式に置換された format のコピー。 A copy of format in which format items are replaced by the string representations of arg0 and arg1.

Exceptions

format が無効です。 format is invalid. - または - -or- 書式項目のインデックスが 0 でも 1 でもありません。 The index of a format item is not zero or one.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能とそれらの表現を文字列に埋め込むには 2 つの式の値をその文字列表現に変換します。This method uses the composite formatting feature to convert the value of two expressions to their string representations and to embed those representations in a string.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、1 つ以上の書式項目を含む、複合書式指定文字列を指定してメソッドを呼び出すことができます。Instead, you can call the method with a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

例: 2 つの引数を書式設定Example: Formatting two arguments

この例では、Format(String, Object, Object)ジェネリックに格納されている時間と温度データを表示するメソッドをDictionary<TKey,TValue>オブジェクト。This example uses the Format(String, Object, Object) method to display time and temperature data stored in a generic Dictionary<TKey,TValue> object. 書式設定する 2 つのオブジェクトは、書式指定文字列に 3 つの書式指定項目に注意してください。Note that the format string has three format items, although there are only two objects to format. これは (日付と時刻の値) の一覧の最初のオブジェクトが 2 つの書式指定項目によって使用されるためです。 時間、および 2 つ目は、日付を表示します。 最初の書式項目の表示。This is because the first object in the list (a date and time value) is used by two format items: The first format item displays the time, and the second displays the date.

using namespace System;
using namespace System::Collections::Generic;

void main()
{
   Dictionary<DateTime, Double>^ temperatureInfo = gcnew Dictionary<DateTime, Double>(); 
   temperatureInfo->Add(DateTime(2010, 6, 1, 14, 0, 0), 87.46);
   temperatureInfo->Add(DateTime(2010, 12, 1, 10, 0, 0), 36.81);
      
   Console::WriteLine("Temperature Information:\n");
   String^ output;   
   for each (KeyValuePair<DateTime, Double>^ item in temperatureInfo)
   {
      output = String::Format("Temperature at {0,8:t} on {0,9:d}: {1,5:N1}�F", 
                              item->Key, item->Value);
      Console::WriteLine(output);
   }
}
// The example displays the following output:
//       Temperature Information:
//       
//       Temperature at  2:00 PM on  6/1/2010:  87.5�F
//       Temperature at 10:00 AM on 12/1/2010:  36.8�F
using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      Dictionary<DateTime, Double> temperatureInfo = new Dictionary<DateTime, Double>(); 
      temperatureInfo.Add(new DateTime(2010, 6, 1, 14, 0, 0), 87.46);
      temperatureInfo.Add(new DateTime(2010, 12, 1, 10, 0, 0), 36.81);
      
      Console.WriteLine("Temperature Information:\n");
      string output;   
      foreach (var item in temperatureInfo)
      {
         output = String.Format("Temperature at {0,8:t} on {0,9:d}: {1,5:N1}°F", 
                                item.Key, item.Value);
         Console.WriteLine(output);
      }
   }
}
// The example displays output like the following:
//       Temperature Information:
//       
//       Temperature at  2:00 PM on  6/1/2010:  87.5°F
//       Temperature at 10:00 AM on 12/1/2010:  36.8°F
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim temperatureInfo As New Dictionary(Of Date, Double) 
      temperatureInfo.Add(#6/1/2010 2:00PM#, 87.46)
      temperatureInfo.Add(#12/1/2010 10:00AM#, 36.81)
      
      Console.WriteLine("Temperature Information:")
      Console.WriteLine()
      Dim output As String   
      For Each item In temperatureInfo
         output = String.Format("Temperature at {0,8:t} on {0,9:d}: {1,5:N1}°F", _
                                item.Key, item.Value)
         Console.WriteLine(output)
      Next
   End Sub
End Module
' The example displays the following output:
'       Temperature Information:
'       
'       Temperature at  2:00 PM on  6/1/2010:  87.5°F
'       Temperature at 10:00 AM on 12/1/2010:  36.8°F
See Also

Format(IFormatProvider, String, Object[]) Format(IFormatProvider, String, Object[]) Format(IFormatProvider, String, Object[]) Format(IFormatProvider, String, Object[])

文字列の書式項目を、指定した配列内の対応するオブジェクトの文字列表記に置換します。 Replaces the format items in a string with the string representations of corresponding objects in a specified array. パラメーターにより、カルチャに固有の書式情報が指定されます。 A parameter supplies culture-specific formatting information.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, ... cli::array <System::Object ^> ^ args);
public static string Format (IFormatProvider provider, string format, params object[] args);
static member Format : IFormatProvider * string * obj[] -> string
Public Shared Function Format (provider As IFormatProvider, format As String, ParamArray args As Object()) As String

パラメーター

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

カルチャ固有の書式情報を提供するオブジェクト。 An object that supplies culture-specific formatting information.

args
Object[]

0 個以上の書式設定対象オブジェクトを含んだオブジェクト配列。 An object array that contains zero or more objects to format.

Returns

書式項目が args の対応するオブジェクトの文字列表記に置換された format のコピー。 A copy of format in which the format items have been replaced by the string representation of the corresponding objects in args.

Exceptions

format または argsnull です。 format or args is null.

format が無効です。 format is invalid. - または - -or- 書式項目のインデックスが 0 (ゼロ) 未満か、または args 配列の長さ以上です。 The index of a format item is less than zero, or greater than or equal to the length of the args array.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能4 つまたは複数の式をその文字列表現に変換して、それらの表現を文字列に埋め込みます。This method uses the composite formatting feature to convert four or more expressions to their string representations and to embed those representations in a string. 変換を実行するには、カルチャ依存した書式設定またはカスタム フォーマッタを使用します。In performing the conversion, the method uses culture-sensitive formatting or a custom formatter. メソッドでは、それぞれに変換しますObject引数を文字列形式を呼び出してそのToString(IFormatProvider) メソッドまたは、書式指定項目がそのを呼び出すことによって、書式指定文字列を含む場合は、オブジェクトの対応するToString(String,IFormatProvider) メソッド。The method converts each Object argument to its string representation by calling its ToString(IFormatProvider) method or, if the object's corresponding format item includes a format string, by calling its ToString(String,IFormatProvider) method. これらのメソッドが存在しない場合は、呼び出し、オブジェクトのパラメーターなしToStringメソッド。If these methods don't exist, it calls the object's parameterless ToString method.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、カルチャに依存した書式設定またはカスタム書式設定および 1 つ以上の書式項目を含む複合書式指定文字列を提供するオブジェクトを使用して、メソッドを呼び出すことができます。Instead, you can call the method with an object that provides culture-sensitive or custom formatting and a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

例: カルチャに依存する書式設定Example: Culture-sensitive formatting

この例では、Format(IFormatProvider, String, Object[])いくつかの異なるカルチャを使用していくつかの日付と時刻の値と数値の文字列形式を表示するメソッド。This example uses the Format(IFormatProvider, String, Object[]) method to display the string representation of some date and time values and numeric values by using several different cultures.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] cultureNames = { "en-US", "fr-FR", "de-DE", "es-ES" };
      
      DateTime dateToDisplay = new DateTime(2009, 9, 1, 18, 32, 0);
      double value = 9164.32;

      Console.WriteLine("Culture     Date                                Value\n");
      foreach (string cultureName in cultureNames)
      {
         CultureInfo culture = new CultureInfo(cultureName);
         string output = String.Format(culture, "{0,-11} {1,-35:D} {2:N}", 
                                       culture.Name, dateToDisplay, value);
         Console.WriteLine(output);
      }    
   }
}
// The example displays the following output:
//    Culture     Date                                Value
//    
//    en-US       Tuesday, September 01, 2009         9,164.32
//    fr-FR       mardi 1 septembre 2009              9 164,32
//    de-DE       Dienstag, 1. September 2009         9.164,32
//    es-ES       martes, 01 de septiembre de 2009    9.164,32
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "de-DE", "es-ES" }
      
      Dim dateToDisplay As Date = #9/1/2009 6:32PM#
      Dim value As Double = 9164.32

      Console.WriteLine("Culture     Date                                Value")
      Console.WriteLine()      
      For Each cultureName As String In cultureNames
         Dim culture As New CultureInfo(cultureName)
         Dim output As String = String.Format(culture, "{0,-11} {1,-35:D} {2:N}", _
                                              culture.Name, dateToDisplay, value)
         Console.WriteLine(output)
      Next    
   End Sub
End Module
' The example displays the following output:
'       Culture     Date                                Value
'       
'       en-US       Tuesday, September 01, 2009         9,164.32
'       fr-FR       mardi 1 septembre 2009              9 164,32
'       de-DE       Dienstag, 1. September 2009         9.164,32
'       es-ES       martes, 01 de septiembre de 2009    9.164,32
See Also

Format(IFormatProvider, String, Object) Format(IFormatProvider, String, Object) Format(IFormatProvider, String, Object) Format(IFormatProvider, String, Object)

指定した文字列の 1 つまたは複数の書式項目を、対応するオブジェクトの文字列形式に置換します。 Replaces the format item or items in a specified string with the string representation of the corresponding object. パラメーターにより、カルチャに固有の書式情報が指定されます。 A parameter supplies culture-specific formatting information.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, System::Object ^ arg0);
public static string Format (IFormatProvider provider, string format, object arg0);
static member Format : IFormatProvider * string * obj -> string
Public Shared Function Format (provider As IFormatProvider, format As String, arg0 As Object) As String

パラメーター

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

カルチャ固有の書式情報を提供するオブジェクト。 An object that supplies culture-specific formatting information.

arg0
Object Object Object Object

書式指定するオブジェクト。 The object to format.

Returns

書式項目が arg0 の文字列形式に置換された format のコピー。 A copy of format in which the format item or items have been replaced by the string representation of arg0.

Exceptions

format が無効です。 format is invalid. - または - -or- 書式項目のインデックスが 0 ではありません。 The index of a format item is not zero.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能式の値を文字列表現に変換して、その表現を文字列に埋め込みます。This method uses the composite formatting feature to convert the value of an expression to its string representation and to embed that representation in a string. 変換を実行するには、カルチャ依存した書式設定またはカスタム フォーマッタを使用します。In performing the conversion, the method uses culture-sensitive formatting or a custom formatter. メソッドに変換しますarg0呼び出すことによって文字列表現にそのToString(IFormatProvider) メソッド書式項目は、書式指定文字列を呼び出すことによって、オブジェクトの対応する場合や、そのToString (String, IFormatProvider) メソッド。The method converts arg0 to its string representation by calling its ToString(IFormatProvider) method or, if the object's corresponding format item includes a format string, by calling its ToString(String,IFormatProvider) method. これらのメソッドが存在しない場合は、呼び出し、オブジェクトのパラメーターなしToStringメソッド。If these methods don't exist, it calls the object's parameterless ToString method.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、カルチャに依存した書式設定またはカスタム書式設定および 1 つ以上の書式項目を含む複合書式指定文字列を提供するオブジェクトを使用して、メソッドを呼び出すことができます。Instead, you can call the method with an object that provides culture-sensitive or custom formatting and a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

Format(String, Object[]) Format(String, Object[]) Format(String, Object[]) Format(String, Object[])

指定した文字列の書式項目を、指定した配列内の対応するオブジェクトの文字列形式に置換します。 Replaces the format item in a specified string with the string representation of a corresponding object in a specified array.

public:
 static System::String ^ Format(System::String ^ format, ... cli::array <System::Object ^> ^ args);
public static string Format (string format, params object[] args);
static member Format : string * obj[] -> string
Public Shared Function Format (format As String, ParamArray args As Object()) As String

パラメーター

args
Object[]

0 個以上の書式設定対象オブジェクトを含んだオブジェクト配列。 An object array that contains zero or more objects to format.

Returns

書式項目が args の対応するオブジェクトの文字列表記に置換された format のコピー。 A copy of format in which the format items have been replaced by the string representation of the corresponding objects in args.

Exceptions

format または argsnull です。 format or args is null.

format が無効です。 format is invalid. - または - -or- 書式項目のインデックスが 0 (ゼロ) 未満か、または args 配列の長さ以上です。 The index of a format item is less than zero, or greater than or equal to the length of the args array.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能4 つまたは複数の式の値をその文字列表現に変換して、それらの表現を文字列に埋め込みます。This method uses the composite formatting feature to convert the value of four or more expressions to their string representations and to embed those representations in a string. 以降、argsパラメーターをマークするが、System.ParamArrayAttribute属性を渡すことができます、オブジェクト メソッドとして、または個々 の引数として、Object配列。Since the args parameter is marked with the System.ParamArrayAttribute attribute, you can pass the objects to the method as individual arguments or as an Object array.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、1 つ以上の書式項目を含む、複合書式指定文字列を指定してメソッドを呼び出すことができます。Instead, you can call the method with a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

例: 複数の 3 つの引数を書式設定Example: Formatting more than three arguments

この例では、特定の日の高値と安値の温度データを格納する文字列を作成します。This example creates a string that contains data on the high and low temperature on a particular date. 複合書式指定文字列には、c# の例の書式項目を 5 と 6 つの Visual Basic の例があります。The composite format string has five format items in the C# example and six in the Visual Basic example. 、、対応する値の文字列形式の幅を定義の書式項目を、2 つと最初の書式指定項目は、標準の日付と時刻の書式指定文字列も含まれます。Two of the format items define the width of their corresponding value's string representation, and the first format item also includes a standard date and time format string.

using namespace System;

void main()
{
   DateTime date1 = DateTime(2009, 7, 1);
   TimeSpan hiTime = TimeSpan(14, 17, 32);
   Decimal hiTemp = (Decimal) 62.1; 
   TimeSpan loTime = TimeSpan(3, 16, 10);
   Decimal loTemp = (Decimal)54.8; 

   String^ result1 = String::Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)", 
                                    date1, hiTime, hiTemp, loTime, loTemp);
   Console::WriteLine(result1);
   Console::WriteLine();
           
   String^ result2 = String::Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)", 
                                    gcnew array<Object^> { date1, hiTime, hiTemp, loTime, loTemp });
   Console::WriteLine(result2);
}
// The example displays the following output:
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
using System;

public class Example
{
   public static void Main()
   {
      DateTime date1 = new DateTime(2009, 7, 1);
      TimeSpan hiTime = new TimeSpan(14, 17, 32);
      decimal hiTemp = 62.1m; 
      TimeSpan loTime = new TimeSpan(3, 16, 10);
      decimal loTemp = 54.8m; 

      string result1 = String.Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)", 
                                     date1, hiTime, hiTemp, loTime, loTemp);
      Console.WriteLine(result1);
      Console.WriteLine();
           
      string result2 = String.Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)", 
                                     new object[] { date1, hiTime, hiTemp, loTime, loTemp });
      Console.WriteLine(result2);
   }
}
// The example displays output like the following:
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
Module Example
   Public Sub Main()
      Dim date1 As Date = #7/1/2009#
      Dim hiTime As New TimeSpan(14, 17, 32)
      Dim hiTemp As Decimal = 62.1d 
      Dim loTime As New TimeSpan(3, 16, 10)
      Dim loTemp As Decimal = 54.8d 

      Dim result1 As String = String.Format("Temperature on {0:d}:{5}{1,11}: {2} degrees (hi){5}{3,11}: {4} degrees (lo)", _
                                           date1, hiTime, hiTemp, loTime, loTemp, vbCrLf)
      Console.WriteLine(result1)
      Console.WriteLine()
           
      Dim result2 As String = String.Format("Temperature on {0:d}:{5}{1,11}: {2} degrees (hi){5}{3,11}: {4} degrees (lo)", _
                                            New Object() { date1, hiTime, hiTemp, loTime, loTemp, vbCrLf })
      Console.WriteLine(result2)                                            
   End Sub
End Module
' The example displays the following output:
'       Temperature on 7/1/2009:
'          14:17:32: 62.1 degrees (hi)
'          03:16:10: 54.8 degrees (lo)
'
'       Temperature on 7/1/2009:
'          14:17:32: 62.1 degrees (hi)
'          03:16:10: 54.8 degrees (lo)

配列として書式設定オブジェクトを渡すこともなく、引数リスト。You can also pass the objects to be formatted as an array rather than a an argument list.

using namespace System;

ref class CityInfo
{
public:
   CityInfo(String^ name, int population, Decimal area, int year)
   {
      this->Name = name;
      this->Population = population;
      this->Area = area;
      this->Year = year;
   }
   
   String^ Name; 
   int Population;
   Decimal Area;
   int Year;
};

ref class Example
{
public:
   static void ShowPopulationData(CityInfo^ city)
   {
      array<Object^>^ args = gcnew array<Object^> { city->Name, city->Year, city->Population, city->Area };
      String^ result = String::Format("{0} in {1}: Population {2:N0}, Area {3:N1} sq. feet", 
                                    args);
      Console::WriteLine(result); 
   }
};

void main()
{
   CityInfo^ nyc2010 = gcnew CityInfo("New York", 8175133, (Decimal) 302.64, 2010);
   Example::ShowPopulationData(nyc2010);
   CityInfo^ sea2010 = gcnew CityInfo("Seattle", 608660, (Decimal) 83.94, 2010);      
   Example::ShowPopulationData(sea2010); 
}
// The example displays the following output:
//       New York in 2010: Population 8,175,133, Area 302.6 sq. feet
//       Seattle in 2010: Population 608,660, Area 83.9 sq. feet
using System;

public class CityInfo
{
   public CityInfo(String name, int population, Decimal area, int year)
   {
      this.Name = name;
      this.Population = population;
      this.Area = area;
      this.Year = year;
   }
   
   public readonly String Name; 
   public readonly int Population;
   public readonly Decimal Area;
   public readonly int Year;
}

public class Example
{
   public static void Main()
   {
      CityInfo nyc2010 = new CityInfo("New York", 8175133, 302.64m, 2010);
      ShowPopulationData(nyc2010);
      CityInfo sea2010 = new CityInfo("Seattle", 608660, 83.94m, 2010);      
      ShowPopulationData(sea2010); 
   }

   private static void ShowPopulationData(CityInfo city)
   {
      object[] args = { city.Name, city.Year, city.Population, city.Area };
      String result = String.Format("{0} in {1}: Population {2:N0}, Area {3:N1} sq. feet", 
                                    args);
      Console.WriteLine(result); 
   }
}
// The example displays the following output:
//       New York in 2010: Population 8,175,133, Area 302.6 sq. feet
//       Seattle in 2010: Population 608,660, Area 83.9 sq. feet
Public Class CityInfo
   Public Sub New(name As String, population As Integer, area As Decimal, year As Integer)
      Me.Name = name
      Me.Population = population
      Me.Area = area
      Me.Year = year
   End Sub
   
   Public ReadOnly Name As String
   Public ReadOnly Population As Integer
   Public ReadOnly Area As Decimal
   Public ReadOnly Year As Integer
End Class

Module Example
   Public Sub Main()
      Dim nyc2010 As New CityInfo("New York", 8175133, 302.64d, 2010)
      ShowPopulationData(nyc2010)
      Dim sea2010 As New CityInfo("Seattle", 608660, 83.94d, 2010)      
      ShowPopulationData(sea2010) 
   End Sub
   
   Private Sub ShowPopulationData(city As CityInfo)
      Dim args() As Object = { city.Name, city.Year, city.Population, city.Area }
      Dim result = String.Format("{0} in {1}: Population {2:N0}, Area {3:N1} sq. feet", args)
      Console.WriteLine(result) 
   End Sub
End Module
' The example displays the following output:
'       New York in 2010: Population 8,175,133, Area 302.6 sq. feet
'       Seattle in 2010: Population 608,660, Area 83.9 sq. feet   
See Also

Format(String, Object) Format(String, Object) Format(String, Object) Format(String, Object)

文字列の 1 つ以上の書式項目を、指定されたオブジェクトの文字列表記に置換します。 Replaces one or more format items in a string with the string representation of a specified object.

public:
 static System::String ^ Format(System::String ^ format, System::Object ^ arg0);
public static string Format (string format, object arg0);
static member Format : string * obj -> string
Public Shared Function Format (format As String, arg0 As Object) As String

パラメーター

arg0
Object Object Object Object

書式指定するオブジェクト。 The object to format.

Returns

書式項目が arg0 の文字列表記に置換された format のコピー。 A copy of format in which any format items are replaced by the string representation of arg0.

Exceptions

format の書式指定項目が正しくありません。 The format item in format is invalid. - または - -or- 書式項目のインデックスが 0 ではありません。 The index of a format item is not zero.

Remarks

重要

String.Format メソッドを呼び出す、あるいは複合書式指定文字列を使用する代わりに、お使いの言語でサポートされている場合、挿入文字列を使用できます。Instead of calling the String.Format method or using composite format strings, you can use interpolated strings if your language supports them. 挿入文字列は、挿入式が含まれている文字列です。An interpolated string is a string that contains interpolated expressions. 各挿入式は式の値によって解かれ、文字列が割り当てられるとき、結果文字列に含まれます。Each interpolated expression is resolved with the expression's value and included in the result string when the string is assigned. 詳細については、文字列補間 (C# リファレンス) および補間文字列 (Visual Basic リファレンス) に関するページを参照してください。For more information, see String interpolation (C# Reference) and Interpolated Strings (Visual Basic Reference).

このメソッドを使用して、複合書式指定機能式の値を文字列表現に変換して、その表現を文字列に埋め込みます。This method uses the composite formatting feature to convert the value of an expression to its string representation and to embed that representation in a string.

ただし、String.Format メソッドの呼び出し時に、呼び出す特定のオーバーロードに焦点を当てる必要はありません。However, when calling the String.Format method, it is not necessary to focus on the particular overload that you want to call. 代わりに、1 つ以上の書式項目を含む、複合書式指定文字列を指定してメソッドを呼び出すことができます。Instead, you can call the method with a composite format string that includes one or more format items. 各書式項目を数値インデックスに割り当てます。最初のインデックスは 0 から始まります。You assign each format item a numeric index; the first index starts at 0. 最初の文字列だけでなく、メソッド呼び出しには、インデックス値と同じ数の追加引数が必要です。In addition to the initial string, your method call should have as many additional arguments as it has index values. たとえば、書式項目のインデックスが 0 と 1 の文字列には 2 個の引数が必要です。インデックスが 0 から 5 の場合は、6 個の引数が必要です。For example, a string whose format items have indexes of 0 and 1 should have 2 arguments; one with indexes 0 through 5 should have 6 arguments. その後、言語コンパイラは、String.Format メソッドの特定のオーバーロードに対するメソッド呼び出しを解決します。Your language compiler will then resolve your method call to a particular overload of the String.Format method.

String.Format メソッドの使用に関する詳細なドキュメントについては、String.Format メソッドの概要呼び出すメソッドに関するトピックを参照してください。For more detailed documentation on using the String.Format method, see Getting started with the String.Format method and Which method do I call?.

例: 1 つの引数を書式設定Example: Formatting a single argument

次の例では、Format(String, Object)文字列の途中で、個人の年齢を埋め込む方法。The following example uses the Format(String, Object) method to embed an individual's age in the middle of a string.

using namespace System;

void main()
{
   DateTime birthdate = DateTime(1993, 7, 28);
   array<DateTime>^ dates = gcnew array<DateTime> { DateTime(1993, 8, 16), 
                                                    DateTime(1994, 7, 28), 
                                                    DateTime(2000, 10, 16), 
                                                    DateTime(2003, 7, 27), 
                                                    DateTime(2007, 5, 27) };

   for each (DateTime dateValue in dates)
   {
      TimeSpan interval = dateValue - birthdate;
      // Get the approximate number of years, without accounting for leap years.
      int years = ((int)interval.TotalDays) / 365;
      // See if adding the number of years exceeds dateValue.
      String^ output;
      if (birthdate.AddYears(years) <= dateValue) {
         output = String::Format("You are now {0} years old.", years);
         Console::WriteLine(output);
      }   
      else {
         output = String::Format("You are now {0} years old.", years - 1);
         Console::WriteLine(output);
      }      
   }
}
// The example displays the following output:
//       You are now 0 years old.
//       You are now 1 years old.
//       You are now 7 years old.
//       You are now 9 years old.
//       You are now 13 years old.
using System;

public class Example
{
   public static void Main()
   {
      DateTime birthdate = new DateTime(1993, 7, 28);
      DateTime[] dates = { new DateTime(1993, 8, 16), 
                           new DateTime(1994, 7, 28), 
                           new DateTime(2000, 10, 16), 
                           new DateTime(2003, 7, 27), 
                           new DateTime(2007, 5, 27) };

      foreach (DateTime dateValue in dates)
      {
         TimeSpan interval = dateValue - birthdate;
         // Get the approximate number of years, without accounting for leap years.
         int years = ((int) interval.TotalDays) / 365;
         // See if adding the number of years exceeds dateValue.
         string output;
         if (birthdate.AddYears(years) <= dateValue) {
            output = String.Format("You are now {0} years old.", years);
            Console.WriteLine(output);
         }   
         else {
            output = String.Format("You are now {0} years old.", years - 1);
            Console.WriteLine(output);
         }      
      }
   }
}
// The example displays the following output:
//       You are now 0 years old.
//       You are now 1 years old.
//       You are now 7 years old.
//       You are now 9 years old.
//       You are now 13 years old.
Module Example
   Public Sub Main()
      Dim birthdate As Date = #7/28/1993#
      Dim dates() As Date = { #9/16/1993#, #7/28/1994#, #10/16/2000#, _
                              #7/27/2003#, #5/27/2007# }
      For Each dateValue As Date In dates
         Dim interval As TimeSpan = dateValue - birthdate
         ' Get the approximate number of years, without accounting for leap years.
         Dim years As Integer = CInt(interval.TotalDays) \ 365
         ' See if adding the number of years exceeds dateValue.
         Dim output As String
         If birthdate.AddYears(years) <= dateValue Then
            output = String.Format("You are now {0} years old.", years)
            Console.WriteLine(output)
         Else
            output = String.Format("You are now {0} years old.", years - 1)
            Console.WriteLine(output)   
         End If
      Next
   End Sub
End Module
' The example displays the following output:
'       You are now 0 years old.
'       You are now 1 years old.
'       You are now 7 years old.
'       You are now 9 years old.
'       You are now 13 years old.
See Also

Applies to