C#字符串处理 及字符串格式化 asp.net 字符串格式化

本文来自:http://www.cnblogs.com/xuerongli/archive/2013/03/23/2976669.html

string字符串是char的集合,而char是Unicode的代码,所以char可以转化为int。

字符串在参数传递时为引用传递;可以使用空字符串(”")。

一、字符串类型转换

1.转为char

可以用索引器来得到字符串中指定的字符,如:

string myString=”hello”;

char myChars;

myChars=myString[0];

要想得到一个char数组可以用如下方法:

char[] myChars = myString.ToCharArray();

char[]与string的不同之处在于char[]可以读写,而string只能读(改写只是对他的重构)

2.转为bety

byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);

反转:

string string = Syste.Text.Encoding.ASCII.GetString( bytes, 0, nBytesSize );

3.转为int

int.parse(str);

4.转为string

用基类提供能的Tostring,如:

123.Tostring();

5.其他转化

Convert.To***(str);如:

Convert.ToInt32(”123″);

Convert.ToBoolean(”123″);

Convert.ToBoolean(”false”);

Convert是一个形式转换的类,不止能转字符串,我们可以用它的静态方法实现好多类型转换

6.转义字符

单个的char用”\”,字符可以用”@”

例如:@”C:\WINDOWS\system32″ 和 “C:\\WINDOWS\\system32″ 是等价的

二、常见字符串处理方法

1.字符串比较

字符串.ComparTo(目标字符串)

“a”.ComparTo(”b”);

2.查找子串

字符串.IndexOf(子串,查找其实位置) ;

字符串.LastIndexOf(子串) ;最后一次出现的位置

str.IndexOf(”ab”,0);

3.插入子串

字符串.Insert(插入位置,插入子串) ;

s.Insert(2,”ab”);

4.移出子串

字符串.Remove(其实位置,移出数);

s.Remove(3,2);

5.替换子串

字符串.Replace(源子串,替换为);

s.Replace(”-”,” “);将-替换为空格

6.截取子串

字符串.Substring(截取其实位置,截取个数);

“abcdef”.Substring(2,3);结果为cde

7.去空格

myString = myString.Trim(); //同时删除字符串前后的空格

char[] trimChars = {’ ‘,’e’,’s’}; //准备删除的字符

myString = myString.Trim(trimChars); //删除所有指定字符

myString = myString.TrimEnd(); //删除字符串后的空格

myString = myString.TrimStart(); //删除字符串前的空格

8.转换大小写

str.ToLower()转化成小写字母

str.ToUpper()转化成大写字母

Char.IsUpper(str,3)//判断一个字符串中的第n个字符是否是大写

9.拆分字符串

string[] Strs = myString.Split(’ ‘,3); //按照空格进行拆分,并且返回前三个字符串,结果在字符串数组里

10.使字串达到指定长度

PadLeft()、PadRight() ,如:

string str1=”00″;

str1=str1.PadLeft(3,’1′); //无第二参数为加空格,结果为“100”

11.得到字符串长度

len=str.Length;

12.字符串遍历

string myString = “This is a test!”;

foreach (char myChar in myString)

{

Console.Write(”{0}”,myChar);

}

其他方法见MSDN

转载请注明文章来自http://hi.baidu.com/chunquedong

首先介绍一下常用的几个功能:

compare(str1,str2)——比较两个字符串 str1,str2的大小,如果大于返回正数,等于返回0,小于返回负数!

indexof——定位字符串中第一次出现某个给定字符串的位置

PadLeft和PadRight——在字符串的开始和结尾用指定的字符填充字符串

ToLower和ToUpper把字符串转换为小写或大写形式

Trim——删除首尾空白

String.Replace——用指定的字符替换字符串中的指定字符。

C#中字符串的建立过程:

例如定义变量 strT=”Welcome to “;

strT+=”www.sinory.com”;

程序首先创建一个System.String 类型的对象并初始化为“Welcome to”。此时编译程度会分配足够的内存来保存这个文本串。并用变量strT来表示这个实例。当执行strT+=”www.sinory.com”时,系统会创建一个新的实例,并分配足够的内存来保存复合后的文本。然后用变量strT来表示这个新的字符

串,就的字符串被撤消。当要进行大规模的字符替换与调整操作时,使用字符串来操作将严重影响性能。在这中情况下就可以用System.Text.StringBuilder类。

StringBuilder类并没有String 类的功能强大,只提供基本的替换和添加和删除字符串中的文本,但它的工作效率非常高,当定义StringBuilder对象时可以指定内存的内存容量,如果不指定系统就会根据对象初始化时的字符串长度来确定。它有两个主要参数Length和Capacity分别表示字符串的实际长度和字符串占据的内存空间长度。对字符串的修改就是在这个内存中进行的,大大提高了添加和替换的的效率。

如定义:StringBuilder sb=new StringBuilder(”Hello,Welcome”,100);//初始化对象并设置初始容量为100

sb.Append(” to www.sinory.com”);

sb.Replace(old,new);//将old替换为new,作用与String.Replace()一样只是不需要在过程中复制字符。

StringBuilder的成员:

StringBuilder sb=new StringBuilder(”www.sinory.com”);//定义初值为www.sinory.com的对象。

StringBuilder sb=new StringBuilder(20);初始化容量为20的空对象。

另外StringBuilder还有MaxCapacity属性用来限定对象可以使用的最大容量。默认大约是int.MaxValue(20亿)

可以在使用过程中定义sb.MaxCapacity=value;

sb.Append(),给当前字符串追加字符串。

sb.AppendFormat()——添加特定格式的字符串

sb.Insert()——插入一个子字符串

sb.Remove()——从当前字符串删除字符

sb.Replace()——替换字符串中指定的字符

sb.ToString()——将sb转化为String 对象

来源:www.sinory.com 作者:sjklaus

String类型可以看作是char变量的只读数组。

//string类型变量可以看作char变量的只读数组的使用

string myString = “A string”;

//使用数组变量的ToCharArray()命令将string变量myString变量的字符串值赋给

//char类型的数组myChar为元素

char[] myChars = myString.ToCharArray();//ToCharArray()命令把字符串值转换成char数组元素

foreach (char myChar in myChars)//读取数组元素

{

Console.WriteLine(”{0}”,myChar);//或(myChar)

}

//string类型变量可以看作char变量的只读数组的使用

Console.WriteLine(”请输入要转换的字符串,把其转换为char数组元素”);

string myString = Console.ReadLine();//从屏幕得到字符串

Console.WriteLine(”你输入的字符串长度为:{0}”,myString .Length );//获取字符串的长度

//使用数组变量的ToCharArray()命令将string变量myString变量的字符串值赋给

//char类型的数组myChar为元素

char[] myChars = myString.ToCharArray();//ToCharArray()命令把字符串值转换成char数组元素

foreach (char myChar in myChars)//读取数组元素

{

Console.WriteLine(”{0}”,myChar);//或(myChar)

}

//字符串大小写转换

Console.WriteLine(”请输入字母字符串:”);

string myString =Console.ReadLine();

//myString = myString.ToLower();

//myString=myString.

Console.WriteLine(”小写形式:{0}”,myString.ToLower());//这种大小写转换输出的形式

Console.WriteLine(”大写形式:{0}”,myString .ToUpper ());

//字符串大小写转换命令

Console.WriteLine(”请输入字母字符串:”);

string myString =Console.ReadLine();

//大小写转换命令:这两个命令与其他命令一样,并没有改变应用字符串的方式

//把这两个命令与字符串合并使用,就会创建一个新的字符串,以便与另一个字符进行

//比较,或者赋给另一个变量。

myString = myString.ToLower();

Console.WriteLine(”小写形式:{0}”, myString);

myString = myString.ToUpper();

Console.WriteLine(”大写形式:{0}”,myString);

//字符串大小写转换命令

Console.WriteLine(”请输入字母字符串:”);

string myString =Console.ReadLine();

myString = myString.ToLower();

// myString = myString.ToUpper();

if (myString ==”YES”)

Console.WriteLine(”大写形式:{0}”, myString);

else

Console.WriteLine(”小写形式:{0}”, myString);

//字符串大小写转换命令

Console.WriteLine(”请输入字母字符串:”);

string myString =Console.ReadLine();

//myString = myString.ToLower();

// myString = myString.ToUpper();

if (myString.ToUpper() ==”YES”)//布尔条件里面的使用检测字符串

Console.WriteLine(”大写形式:{0}”, myString);

else

Console.WriteLine(”{0}”, myString);

//删除空格命令 .Trim()

string userResponse = Console.ReadLine();

userResponse = userResponse.Trim();//用该命令处理后产生新地变量再赋给此变量:

if (userResponse.ToLower() == “yes”)

Console.WriteLine(”OK!”);

else

Console .WriteLine (”NO!”);

//Trim命令,有删除字符空格的作用

char[] trimChars ={ ‘ ‘,’e’,’s’};//命名一个要被删除的字符的数组

string userResponse = Console.ReadLine();

userResponse = userResponse.ToLower();

userResponse = userResponse.Trim(trimChars);//Trim()括号的这种用法,里面是变量

if (userResponse == “y”)

{

Console.WriteLine(”.Trim()命令可以删除字符\”yes\”删除后e s 后变为:{0}”,userResponse );

}

//删除字符串前后字符命令,也可以指定char数组删除字符与空格

string mystring = Console.ReadLine();

mystring = mystring.TrimStart();//删除前面的空格

mystring = mystring.TrimEnd();//删除字符串后面的空格

Console.WriteLine(”删除字符串前面后面的空格:*{0}*”,mystring );

//添加空格 .trimStart() .trimEnd() 删除左右空格命令

string mystring = Console.ReadLine();

//为字符串添加空格

mystring = mystring.TrimStart();//删除前面的空格

mystring = mystring.PadLeft(10);//在字符串左面添加10 个空格

mystring = mystring.TrimEnd();//删除字符串后面的空格

mystring = mystring.PadRight(30);//在字符串的右面添加10 个空格

Console.WriteLine(”删除字符串前面后面的空格:*{0}*”,mystring );

//字符串的添加命令: .PadRight() . PadLeft() 使字符串达到指定的长度

string myString = Console.ReadLine();

//空格的添加命令,都是从左向右数字符串的长度进行添加 空格

myString = myString.PadLeft(10);

Console.WriteLine(”*{0}*”,myString.PadRight (11));

//字符串左右添加空格字符命令

string myString = Console.ReadLine();

//PadLeft() PadRight() 向字符串左右添加 空格字符命令

myString = myString.PadLeft(10, ‘#’);

myString = myString.PadRight(20,’*’);

Console.WriteLine(”{0}”,myString);

//Split用指定的分隔符数组分隔字符串中 得其子字符串

string myString = “This is a test”;

char[] separator ={’ ‘};//‘a’ a为分隔符,此例为空格分隔符定义一个分隔符数组

string[] myWords;

//.Split命令可以把myString转换为string数组,并把它在指定的位置分隔开

//分隔符为数组中的元素!

myWords = myString.Split(separator ); //Split命令作用是用指定的分隔符分隔字符串,成为子字符串 子字符串赋给数组,作为元素输出

foreach (string word in myWords)

{

Console.WriteLine(”{0}”,word );

}

本文来自:http://www.cnblogs.com/future/archive/2008/11/13/1333133.html

DataFormatString属性:{0:Bxx} B为取值类型

格式字符 说明

C 以货币格式显示数值。

D 以十进制格式显示数值。

E 以科学记数法(指数)格式显示数值。

F 以固定格式显示数值。

G 以常规格式显示数值。

N 以数字格式显示数值。

X 以十六进制格式显示数值。

例:

float money=153325.32m;

Label1.Text=string.Format("{0:C2}",money);

结果如下:¥153,325.32,

注意 除 X 以指定的大小写形式显示十六进制字符之外,其他格式字符不区分大小写。

格式字符后的值(常规示例中为 xx)指定显示的值的有效位数或小数位数。

例:

98765.4321 "{0:C}" ¥98,765.43

-8765.4321 "{0:C}" (¥98,765.43)

12345 "{0:D}" 12345

12345 "{0:D6}" 012345

98765.4321 "{0:E}" 9.87654321E+004

98765.4321 "{0:E11}" 9.87654321000E+004

98765.4321 "{0:F}" 98765.43

98765.4321 "{0:F0}" 98765

98765.4321 "{0:G}" 98765.4321

987654321 "{0:G6}" 9.87654E8

98765.4321 "{0:N}" 98,765.43

987654321 "{0:N3}" 987,654,321.000

98765.4321 "Total:{0:C}" ¥98,765.43

字符格式:

{0:c}货币格式

日期:

{0:d}2004-11-1

{0:D}2004年11月1日

格式说明符 名称 说明

d 短日期模式

D 长日期模式

t 短时间模式

T 长时间模式

f 完整日期/时间模式(短时间) 显示长日期和短时间模式的组合,由空格分隔。

F 完整日期/时间模式(长时间)

g 常规日期/时间模式(短时间) 显示短日期和短时间模式的组合,由空格分隔。

G 常规日期/时间模式(长时间) 显示短日期和长时间模式的组合,由空格分隔。

M 或 m 月日模式

R 或 r RFC1123 模式

s 可排序的日期/时间模式;

u 通用的可排序日期/时间模式

U 通用的可排序日期/时间模式

Y 或 y 年月模式

任何其他单个字符 未知说明符

'///////////////////////////////////////////

自定义日期格式

格式说明符 说明

d 显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则它显示为一位数字。

请注意,如果“d”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“d”格式说明符与其他自定义格式说明符或者“%”字符一起传递,则它被解释为自定义格式说明符。

dd 显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。

ddd 显示指定的 DateTime 的日期部分缩写名称。如果未提供特定的有效格式提供程序(实现具有预期属性的 IFormatProvider 的非空对象),则使用 DateTimeFormat 的 AbbreviatedDayNames 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedDayNames 属性。

dddd(外加任意数量的附加“d”字符) 显示指定的 DateTime 的日期全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 DayNames 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 DayNames 属性。

f 显示以一位数字表示的秒。

请注意,如果“f”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为完整的(长日期 + 短时间)格式说明符。如果“f”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

ff 显示以二位数字表示的秒。

fff 显示以三位数字表示的秒。

ffff 显示以四位数字表示的秒。

fffff 显示以五位数字表示的秒。

ffffff 显示以六位数字表示的秒。

fffffff 显示以七位数字表示的秒。

g 或 gg(外加任意数量的附加“g”字符) 显示指定的 DateTime 的年代部分(例如 A.D.)。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则年代由与 DateTimeFormat 关联的日历及其与当前线程关联的当前区域性确定。

请注意,如果“g”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准常规格式说明符。如果“g”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

h 以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则它显示为单个数字。显示小时时不发生任何舍入。例如,DateTime 为 5:43 时返回 5。

hh, hh(外加任意数量的附加“h”字符) 以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则将其格式化为前面带有 0 (01-09)。

H 以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则它显示为单个数字。

HH, HH(外加任意数量的附加“H”字符) 以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则将其格式化为前面带有 0 (01-09)。

m 以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则它显示为一位数字。

请注意,如果“m”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月日模式格式说明符。如果“m”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

mm, mm(外加任意数量的附加“m”字符) 以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。

M 显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则它显示为一位数字。

请注意,如果“M”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月天模式格式说明符。如果“M”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

MM 显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。

MMM 显示指定的 DateTime 的月部分缩写名称。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AbbreviatedMonthNames 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedMonthNames 属性。

MMMM 显示指定的 DateTime 的月的全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 MonthNames 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 MonthNames 属性。

s 以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则它仅显示为一位数字。

请注意,如果“s”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的可排序日期/时间模式格式说明符。如果“s”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

ss, ss(外加任意数量的附加“s”字符) 以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。

t 显示指定的 DateTime 的 A.M./P.M. 指示项的第一个字符。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AMDesignator(或 PMDesignator)属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator(或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。

请注意,如果“t”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的长时间模式格式说明符。如果“t”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

tt, tt(外加任意数量的附加“t”字符) 显示指定的 DateTime 的 A.M./P.M. 指示项。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AMDesignator(或 PMDesignator)属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator (或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。

y 最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则它显示为一位数字。

请注意,如果“y”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“y”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

yy 最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。

yyyy 显示指定的 DateTime 的年份部分(包括纪元)。如果年份长度小于四位,则按需要在前面追加零以使显示的年份长度达到四位。

z 仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导符号(零显示为“+0”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值的范围是 -12 到 +13。如果偏移量为一位数 (0-9),则将其显示为带合适前导符号的一位数。时区设置以 +X 或 - X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。

zz 仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导或尾随符号(零显示为“+00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 - 12 到 +13。如果偏移量为一位数 (0-9),则将其格式化为前面带有 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 -X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。

zzz, zzz(外加任意数量的附加“z”字符) 以小时和分钟为单位显示系统当前时区的时区偏移量。偏移量总是显示为带有前导或尾随符号(零显示为“+00:00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 -12:00 到 +13:00。如果偏移量为一位数 (0-9),则将其格式化为前面带有前导 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 -X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。

: 时间分隔符。

/ 日期分隔符。

" 带引号的字符串。显示转义符 (/) 之后两个引号之间的任何字符串的文本值。

' 带引号的字符串。显示两个“'”字符之间的任何字符串的文本值。

%c 其中 c 既是标准格式说明符又是自定义格式说明符,显示与格式说明符关联的自定义格式模式。

请注意,如果格式说明符作为单个字符来单独使用,它将被解释成标准格式说明符。只有包含两个或更多字符的格式说明符被解释为自定义格式说明符。说明符可以被同时定义为标准和自定义格式说明符,要显示此种说明符的自定义格式,请在说明符之前加“%”符号。

\c 其中 c 是任意字符,转义符将下一个字符显示为文本。在此上下文中,转义符不能用于创建转义序列(如“\n”表示换行)。

任何其他字符 其他字符作为文本直接写入输出字符串。

'///////////////////////////////////////////

枚举格式字符串

可以使用 ToString 方法创建新的字符串对象,以表示 Enum 的数字、十六进制或字符串值。此方法采用某个枚举格式化字符串指定希望返回的值。

下表列出了枚举格式化字符串及其返回的值。这些格式说明符不区分大小写。

格式字符串 结果

G 或 g 如有可能,将枚举项显示为字符串值,否则显示当前实例的整数值。如果枚举定义中设置了 Flags 属性,则串联每个有效项的字符串值并将各值用逗号分开。如果未设置 Flags 属性,则将无效值显示为数字项。

F 或 f 如有可能,将枚举项显示为字符串值。如果值可以完全显示为枚举项的总和(即使未提供 Flags 属性),则串联每个有效项的字符串值并将各值用逗号分开。如果值不能完全由枚举项确定,则将值格式化为整数值。

D 或 d 以尽可能短的表示形式将枚举项显示为整数值。

X 或 x 将枚举项显示为十六进制值。按需要将值表示为带有前导零,以确保值的长度最少有八位。

DataFormatString属性:{0:Bxx} B为取值类型

格式字符 说明

C 以货币格式显示数值。

D 以十进制格式显示数值。

E 以科学记数法(指数)格式显示数值。

F 以固定格式显示数值。

G 以常规格式显示数值。

N 以数字格式显示数值。

X 以十六进制格式显示数值。

例:

float money=153325.32m;

Label1.Text=string.Format("{0:C2}",money);

结果如下:¥153,325.32,

注意 除 X 以指定的大小写形式显示十六进制字符之外,其他格式字符不区分大小写。

格式字符后的值(常规示例中为 xx)指定显示的值的有效位数或小数位数。

例:

98765.4321 "{0:C}" ¥98,765.43

-8765.4321 "{0:C}" (¥98,765.43)

12345 "{0:D}" 12345

12345 "{0:D6}" 012345

98765.4321 "{0:E}" 9.87654321E+004

98765.4321 "{0:E11}" 9.87654321000E+004

98765.4321 "{0:F}" 98765.43

98765.4321 "{0:F0}" 98765

98765.4321 "{0:G}" 98765.4321

987654321 "{0:G6}" 9.87654E8

98765.4321 "{0:N}" 98,765.43

987654321 "{0:N3}" 987,654,321.000

98765.4321 "Total:{0:C}" ¥98,765.43

字符格式:

{0:c}货币格式

日期:

{0:d}2004-11-1

{0:D}2004年11月1日

格式说明符 名称 说明

d 短日期模式

D 长日期模式

t 短时间模式

T 长时间模式

f 完整日期/时间模式(短时间) 显示长日期和短时间模式的组合,由空格分隔。

F 完整日期/时间模式(长时间)

g 常规日期/时间模式(短时间) 显示短日期和短时间模式的组合,由空格分隔。

G 常规日期/时间模式(长时间) 显示短日期和长时间模式的组合,由空格分隔。

M 或 m 月日模式

R 或 r RFC1123 模式

s 可排序的日期/时间模式;

u 通用的可排序日期/时间模式

U 通用的可排序日期/时间模式

Y 或 y 年月模式

任何其他单个字符 未知说明符

'///////////////////////////////////////////

自定义日期格式

格式说明符 说明

d 显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则它显示为一位数字。

请注意,如果“d”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“d”格式说明符与其他自定义格式说明符或者“%”字符一起传递,则它被解释为自定义格式说明符。

dd 显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。

ddd 显示指定的 DateTime 的日期部分缩写名称。如果未提供特定的有效格式提供程序(实现具有预期属性的 IFormatProvider 的非空对象),则使用 DateTimeFormat 的 AbbreviatedDayNames 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedDayNames 属性。

dddd(外加任意数量的附加“d”字符) 显示指定的 DateTime 的日期全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 DayNames 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 DayNames 属性。

f 显示以一位数字表示的秒。

请注意,如果“f”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为完整的(长日期 + 短时间)格式说明符。如果“f”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

ff 显示以二位数字表示的秒。

fff 显示以三位数字表示的秒。

ffff 显示以四位数字表示的秒。

fffff 显示以五位数字表示的秒。

ffffff 显示以六位数字表示的秒。

fffffff 显示以七位数字表示的秒。

g 或 gg(外加任意数量的附加“g”字符) 显示指定的 DateTime 的年代部分(例如 A.D.)。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则年代由与 DateTimeFormat 关联的日历及其与当前线程关联的当前区域性确定。

请注意,如果“g”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准常规格式说明符。如果“g”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

h 以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则它显示为单个数字。显示小时时不发生任何舍入。例如,DateTime 为 5:43 时返回 5。

hh, hh(外加任意数量的附加“h”字符) 以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则将其格式化为前面带有 0 (01-09)。

H 以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则它显示为单个数字。

HH, HH(外加任意数量的附加“H”字符) 以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则将其格式化为前面带有 0 (01-09)。

m 以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则它显示为一位数字。

请注意,如果“m”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月日模式格式说明符。如果“m”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

mm, mm(外加任意数量的附加“m”字符) 以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。

M 显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则它显示为一位数字。

请注意,如果“M”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月天模式格式说明符。如果“M”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

MM 显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。

MMM 显示指定的 DateTime 的月部分缩写名称。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AbbreviatedMonthNames 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedMonthNames 属性。

MMMM 显示指定的 DateTime 的月的全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 MonthNames 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 MonthNames 属性。

s 以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则它仅显示为一位数字。

请注意,如果“s”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的可排序日期/时间模式格式说明符。如果“s”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

ss, ss(外加任意数量的附加“s”字符) 以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。

t 显示指定的 DateTime 的 A.M./P.M. 指示项的第一个字符。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AMDesignator(或 PMDesignator)属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator(或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。

请注意,如果“t”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的长时间模式格式说明符。如果“t”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

tt, tt(外加任意数量的附加“t”字符) 显示指定的 DateTime 的 A.M./P.M. 指示项。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AMDesignator(或 PMDesignator)属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator (或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。

y 最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则它显示为一位数字。

请注意,如果“y”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“y”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。

yy 最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。

yyyy 显示指定的 DateTime 的年份部分(包括纪元)。如果年份长度小于四位,则按需要在前面追加零以使显示的年份长度达到四位。

z 仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导符号(零显示为“+0”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值的范围是 -12 到 +13。如果偏移量为一位数 (0-9),则将其显示为带合适前导符号的一位数。时区设置以 +X 或 - X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。

zz 仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导或尾随符号(零显示为“+00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 - 12 到 +13。如果偏移量为一位数 (0-9),则将其格式化为前面带有 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 -X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。

zzz, zzz(外加任意数量的附加“z”字符) 以小时和分钟为单位显示系统当前时区的时区偏移量。偏移量总是显示为带有前导或尾随符号(零显示为“+00:00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 -12:00 到 +13:00。如果偏移量为一位数 (0-9),则将其格式化为前面带有前导 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 -X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。

: 时间分隔符。

/ 日期分隔符。

" 带引号的字符串。显示转义符 (/) 之后两个引号之间的任何字符串的文本值。

' 带引号的字符串。显示两个“'”字符之间的任何字符串的文本值。

%c 其中 c 既是标准格式说明符又是自定义格式说明符,显示与格式说明符关联的自定义格式模式。

请注意,如果格式说明符作为单个字符来单独使用,它将被解释成标准格式说明符。只有包含两个或更多字符的格式说明符被解释为自定义格式说明符。说明符可以被同时定义为标准和自定义格式说明符,要显示此种说明符的自定义格式,请在说明符之前加“%”符号。

\c 其中 c 是任意字符,转义符将下一个字符显示为文本。在此上下文中,转义符不能用于创建转义序列(如“\n”表示换行)。

任何其他字符 其他字符作为文本直接写入输出字符串。

'///////////////////////////////////////////

枚举格式字符串

可以使用 ToString 方法创建新的字符串对象,以表示 Enum 的数字、十六进制或字符串值。此方法采用某个枚举格式化字符串指定希望返回的值。

下表列出了枚举格式化字符串及其返回的值。这些格式说明符不区分大小写。

格式字符串 结果

G 或 g 如有可能,将枚举项显示为字符串值,否则显示当前实例的整数值。如果枚举定义中设置了 Flags 属性,则串联每个有效项的字符串值并将各值用逗号分开。如果未设置 Flags 属性,则将无效值显示为数字项。

F 或 f 如有可能,将枚举项显示为字符串值。如果值可以完全显示为枚举项的总和(即使未提供 Flags 属性),则串联每个有效项的字符串值并将各值用逗号分开。如果值不能完全由枚举项确定,则将值格式化为整数值。

D 或 d 以尽可能短的表示形式将枚举项显示为整数值。

X 或 x 将枚举项显示为十六进制值。按需要将值表示为带有前导零,以确保值的长度最少有八位。