System.String.Format 方法 (String, Object)

方法描述

将指定字符串中的一个或多个格式项替换为指定对象的字符串表示形式。

语法定义(C# System.String.Format 方法 (String, Object) 的用法)

public static string Format(
	string format,
	Object arg0
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
format System-String 符合格式字符串(参见“备注”)。
arg0 System-Object 要设置格式的对象。
返回值 System.String format 的副本,其中的任何格式项均替换为 arg0 的字符串表示形式。

提示和注释

此方法使用 .NET Framework 的复合格式设置功能将对象的值转换为其字符串表示形式,并将该表示形式嵌入字符串中。 .NET Framework 提供了广泛的格式设置支持,下面的格式设置主题中对此有更详细的描述:

有关 Format、AppendFormat 等方法以及 WriteLine 的某些重载所支持的复合格式设置功能的更多信息,请参见复合格式。

有关数值格式说明符的更多信息,请参见标准数字格式字符串和自定义数字格式字符串。

有关日期和时间格式说明符的更多信息,请参见标准日期和时间格式字符串和自定义日期和时间格式字符串。

有关枚举格式说明符的更多信息,请参见枚举格式字符串。

有关格式设置的更多信息,请参见格式化类型。

format 参数由零或多个文本序列与零或多个索引占位符混合组成,其中索引占位符称为格式项,对应于与此方法的参数列表中的对象。 格式设置过程将每个格式项替换为相应对象值的字符串表示形式。

格式项的语法如下:

{index[,length][:formatString]}

方括号中的元素是可选的。 下表描述每个元素。 有关复合格式设置功能(包括格式项的语法)的更多信息,请参见复合格式。

元素

说明

索引

要设置格式的对象的参数列表中的位置(从零开始)。 如果由 index 指定的对象为 null,则格式项将被 String.Empty 替换。 由于该重载在其参数列表中只有单个对象,index 的值必须始终为 0。 如果 index 位置没有参数,将引发 FormatException。

,length

参数的字符串表示形式中包含的最小字符数。 如果该值是正的,则参数右对齐;如果该值是负的,则参数左对齐。

:formatString

要设置格式的对象支持的标准或自定义格式字符串。 formatString 的可能值与该对象的 ToString(format) 方法支持的值相同。 如果没有指定 formatString,并且要设置格式的对象实现了 IFormattable 接口,则将传递 null 作为用作 IFormattable.ToString 格式字符串的 format 参数的值。

注意

有关日期和时间值使用的标准和自定义格式字符串的信息,请参见标准日期和时间格式字符串和自定义日期和时间格式字符串。 有关数值使用的标准和自定义格式字符串的信息,请参见标准数字格式字符串和自定义数字格式字符串。 有关枚举使用的标准格式字符串的信息,请参见枚举格式字符串。

必须使用前导大括号字符和尾部大括号字符,即“{”和“}”。 若要在 format 中指定单个大括号字符,请指定两个前导大括号字符或尾部大括号字符;即“{{”或“}}”。

尽管 String.Format(String, Object) 方法在参数列表中具有单个对象,只要格式项目都具有同一索引,format 仍可包括多个格式项目。 在下面的示例中,格式字符串包括两个格式项:一个显示数字的十进制值,另一个显示其十六进制值。

C#

VB

复制

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

如果 format 的值为“Thank you for your purchase of {0:####} copies of Microsoft®.NET (Core Reference).”,并且 arg0 为值为 123 的 Int16,则返回值将为:

“Thank you for your purchase of 123 copies of Microsoft®.NET (Core Reference).”

如果 format 的值为“Brad's dog has {0,-8:G} fleas.”,arg0 是值为 42 的 Int16(在此示例中,下划线表示填充空格),则返回值将为:

“Brad's dog has 42______ fleas.”

System.String.Format 方法 (String, Object)例子

下面的示例使用 Format(String, Object) 方法将一个人的年龄嵌入字符串的中部。

using System;

[assembly: CLSCompliant(true)]
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.

异常

异常 异常描述
ArgumentNullException format 为 null。
FormatException
  • format 中的格式项无效。
  • 格式项的索引大于或小于零。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。