.NET Framework格式化字符串
.NET Framework 提供了可自定义的、适于常规用途的格式化机制,可将值转换为适合显示的字符串。例如,可以将数值格式化为十六进制、科学记数法或者由用户指定的标点符号分隔成组的一系列数字。可以将日期和时间格式化为适合于特定的国家、地区或区域性。可以将枚举常量格式化为它的数值或名称。
您可以通过指定格式字符串和格式提供程序或使用默认设置来控制格式化。格式字符串包含一个或多个格式说明符字符,以指示如何转换值。格式提供程序提供了转换特定类型所需的其他控制、替换和区域性等方面的信息。
您可以通过实现 IFormattable 接口来重写 .NET Framework 解释格式化字符串的方法;通过实现 IFormatProvider 接口来提供您自己的格式提供程序;通过实现 ICustomFormatter 接口来执行您自己的格式化。
.NET Framework 提供了名为复合格式化的功能,它使用一个或多个格式字符串将一个或多个格式化值嵌入输出字符串。输出字符串可用于进行进一步处理,显示到系统控制台或者写入到流。
格式说明符
.NET Framework 定义了标准和自定义格式说明符,用于格式化数字、日期和时间以及枚举。各种格式化输出字符串的方法(例如 Console.WriteLine 和所有类型的 ToString 方法),以及一些分析输入字符串的方法(例如 DateTime.ParseExact)都使用格式化说明符。
有关格式化数字数据的信息,请参见“数字格式字符串”。有关常用的数字格式说明符的列表,请参见“标准数字格式字符串”;有关自定义格式说明符(可用于创建自己的格式字符串)的列表,请参见“自定义数字格式字符串”。
关于格式化日期和时间的信息,请参见“日期与时间格式字符串”。有关常用日期和时间格式说明符的列表,请参见“标准 DateTime 格式字符串”;有关自定义时间和日期格式说明符(可用于创建自己的格式字符串)的列表,请参见“自定义 DateTime 格式字符串”。
有关格式化枚举的信息,以及标准枚举格式说明符的列表,请参见“枚举格式字符串”。
分析和格式说明符
格式化将类型的值转化为字符串表示形式;分析则与格式化相反,它是从字符串表示形式创建数据类型。格式提供程序控制如何执行分析,一些方法(例如 DateTime.ParseExact)采用格式说明符参数,可指示字符串表示形式的预期格式。有关分析的更多信息,请参见“分析字符串”。
ToString 和格式说明符
.NET Framework 支持重载类型的默认 ToString 方法,该方法执行基本格式化,版本为 ToString 的专用版本,此版本使用格式说明符参数来指示如何格式化值。有关更多信息,请参见“格式化基类型”和 IFormattable 接口。
Format 函数返回根据格式 String 表达式中包含的指令设置格式的字符串。
1.
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string a = "Clingingboy";
Response.Write(string.Format("你的姓名是:{0}",a));//{0}表示占位符,传递给第二个参数来替换该占位符
string name = "Clingingboy";
string age = "20";
string city = "hangzhou";
Response.Write("<br>");
Response.Write(string.Format("我的姓名是{1},年龄是{0},来自{2}",age,name,city));
Response.Write(string.Format("<pre>{0,20}</pre>", "111"));//占位符宽度
}
</script>
2.格式化数值
<%@ Page Language="C#" %>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
int intNum;
Decimal decNum;
intNum = 32001;
decNum = 32001.9099m;
// Decimal Format;
Response.Write( intNum.ToString( "d" ) + "<BR>" );
// => Displays 32001
// Exponential Format
Response.Write( intNum.ToString( "e" )+ "<BR>" );
// => Displays 3.200100e+004
Response.Write( decNum.ToString( "e" )+ "<BR>" );
// => Displays 3.200191e+004
// Fixed-Point Format
Response.Write( intNum.ToString( "f" ) + "<BR>");
// => Displays 32001.00
Response.Write( decNum.ToString( "f" ) + "<BR>");
// => Displays 32001.91
// General Format
Response.Write( intNum.ToString( "g" )+ "<BR>" );
// => Displays 32001
Response.Write( decNum.ToString( "g" )+ "<BR>" );
// => Displays 32001.9099
// Number Format
Response.Write( intNum.ToString( "n" )+ "<BR>" );
// => Displays 32,001.00
Response.Write( decNum.ToString( "n" )+ "<BR>" );
// => Displays 32,001.91
Response.Write(intNum.ToString("x") + "<BR>");
//7d01
}
</script>
使用Format来格式化
Response.Write(string.Format("{0:n}", 123456) + "<BR>");
<%@ Page Language="C#" %>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
int intNum;
Decimal decNum;
intNum = 32001;
decNum = 32001.9099m;
// Decimal Format;
Response.Write(string.Format("{0:n}", 123456) + "<BR>");//0为索引值,n为格式化
Response.Write( intNum.ToString( "d10" ) + "<BR>" );//在数值前面加0,总位数为10
Response.Write(intNum.ToString("n10") + "<BR>");//小数位数
}
</script>
3.格式化货币
<%@ Page Language="C#" %>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
decimal intNum;
intNum = 32001.4633m;
// Decimal Format;
Response.Write(string.Format("{0:c}", intNum) + "<BR>");//0为索引值,n为格式化
Response.Write(string.Format("{0:c3}", intNum) + "<BR>");
Response.Write(intNum.ToString("c") + "<BR>");//默认小数位数位为2
Response.Write( intNum.ToString( "c1" ) + "<BR>" );//自动四舍五入
}
</script>
4.格式化日期和时间
<%@ Page Language="C#" %>
<body style="font-family: 宋体; font-size: 12px; color: sandybrown;">
</body>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
DateTime dtmDate;
dtmDate = DateTime.Now;
// short Date
Response.Write( dtmDate.ToString( "d" ) );
Response.Write("<br>" );
// => Displays 2/13/2001
// long Date
Response.Write( dtmDate.ToString( "D" ) );
Response.Write("<br>" );
// => Displays Tuesday, February 13, 2001
// long Date and short Time
Response.Write( dtmDate.ToString( "f" ) );
Response.Write("<br>" );
// => Displays Tuesday, February 13, 2001 3:40 PM
// long Date and long Time
Response.Write( dtmDate.ToString( "F" ) );
Response.Write("<br>" );
// => Displays Tuesday, February 13, 2001 3:41:04 PM
// short Date and short Time
Response.Write( dtmDate.ToString( "g" ) );
Response.Write("<br>" );
// => Displays 2/13/2001 3:42 PM
// short Date and long Time
Response.Write( dtmDate.ToString( "G" ) );
Response.Write("<br>" );
// => Displays 2/13/2001 3:42:52 PM
// Month and Day
Response.Write( dtmDate.ToString( "M" ) );
Response.Write("<br>" );
// => Displays February 13
// RFC 1123
Response.Write( dtmDate.ToString( "R" ) );
Response.Write("<br>" );
// => Displays Tue, 13 Feb 2001 15:44:52 GMT
// ISO 8601
Response.Write( dtmDate.ToString( "s" ) );
Response.Write("<br>" );
// => Displays 2001-02-13T15:45:55
// short Time
Response.Write( dtmDate.ToString( "t" ) );
Response.Write("<br>" );
// => Displays 3:47 PM
// long Time
Response.Write( dtmDate.ToString( "T" ) );
Response.Write("<br>" );
// => Displays 3:47:37 PM
// Universal ISO 8601
Response.Write( dtmDate.ToString( "u" ) );
Response.Write("<br>" );
// => Displays 2001-02-13 15:48:41Z
// Universal Time
Response.Write( dtmDate.ToString( "U" ) );
Response.Write("<br>" );
// => Displays Tuesday, February 13, 2001 11:49:51 PM
// Month and Year
Response.Write( dtmDate.ToString( "Y" ) );
Response.Write("<br>" );
// => Displays February, 2001
}
</script>