C#中的字符串格式化

介绍字符串的格式化:

C# 字符串格式化
在C#中格式化字符串
简介
在编写C#程序的过程中经常需要输出特定格式的字符串,因此要对需要输出的对象进行格式化。


正文
每个对象都有一个ToString方法用来返回这个对象的字符串形式的呈现。ToString方法能接收一个字符串参数,告诉对象怎样格式化它自己。 String.Format的调用中,格式化字符串放在后面的位置,例如“{0:##}”。大括号里的文本是{index[,alignment][:formatString]}。如果alignment是正的,则文本在给出文本空间中右对齐。如果alignment是负的,则左对齐。


1. 字符串Strings
Sample Generates
String.Format(”->{1,10}<-”, “Hello”); -> Hello<-
String.Format(”->{1,-10}<-”, “Hello”); ->Hello <-
2. 数值Numbers
基本数字格式说明符:


Specifier Type Format Output (Passed Double 1.42) Output (Passed Int -12400)
c Currency {0:c} $1.42 -$12,400
d Decimal (Whole number) {0:d} System.FormatException -12400
e Scientific {0:e} 1.420000e+000 -1.240000e+004
f Fixed point {0:f} 1.42 -12400.00
g General {0:g} 1.42 -12400
n Number with commas for thousands {0:n} 1.42 -12,400
r Round trippable {0:r} 1.42 System.FormatException
x Hexadecimal {0:x4} System.FormatException cf90
自定义数值格式:


Specifier Type Example Output (Passed Double 1500.42) Note
0 Zero placeholder {0:00.0000} 1500.4200 Pads with zeroes.
# Digit placeholder {0:(#).##} (1500).42
. Decimal point {0:0.0} 1500.4
, Thousand separator {0:0,0} 1,500 Must be between two zeroes.
,. Number scaling {0:0,.} 2 Comma adjacent to Period scales by 1000.
% Percent {0:0%} 150042% Multiplies by 100, adds % sign.
e Exponent placeholder {0:00e+0} 15e+2 Many exponent formats available.
; Group separator see below
在格式化货币值时,如果要求负数值放在圆括号里,则分号非常有用。货币值格式化的例子在本文的底部说明。


3. 日期Dates
记住日期的格式化尤其依赖于系统的区域设置;下面的示例字符串来自我的本地区域设置。


Specifier Type Example(Passed System.DateTime.Now)
d Short date 10/12/2002
D Long date December 10, 2002
t Short time 10:11 PM
T Long time 10:11:29 PM
f Full date & time December 10, 2002 10:11 PM
F Full date & time (long) December 10, 2002 10:11:29 PM
g Default date & time 10/12/2002 10:11 PM
G Default date & time (long) 10/12/2002 10:11:29 PM
M Month day pattern December 10
r RFC1123 date string Tue, 10 Dec 2002 22:11:29 GMT
s Sortable date string 2002-12-10T22:11:29
u Universal sortable, local time 2002-12-10 22:13:50Z
U Universal sortable, GMT December 11, 2002 3:13:50 AM
Y Year month pattern December, 2002
“U”说明符看起来像损坏似得,这个字符串肯定不能排序的。


自定义日期格式:


Specifier Type Example Example Output
dd Day {0:dd} 10
ddd Day name {0:ddd} Tue
dddd Full day name {0:dddd} Tuesday
f, ff, … Second fractions {0:fff} 932
gg, … Era {0:gg} A.D.
hh 2 digit hour {0:hh} 10
HH 2 digit hour, 24hr format {0:HH} 22
mm Minute 00-59 {0:mm} 38
MM Month 01-12 {0:MM} 12
MMM Month abbreviation {0:MMM} Dec
MMMM Full month name {0:MMMM} December
ss Seconds 00-59 {0:ss} 46
tt AM or PM {0:tt} PM
yy Year, 2 digits {0:yy} 02
yyyy Year {0:yyyy} 2002
zz Timezone offset, 2 digits {0:zz} -05
zzz Full timezone offset {0:zzz} -05:00
: Separator {0:hh:mm:ss} 10:43:20
/ Separator {0:dd/MM/yyyy} 10/12/2002
4. 枚举Numerations
Specifier Type 翻译
g Default (Flag names if available, otherwise decimal) 默认(如果能获得枚举标志名,则返回标志名,否则返回十进制数
f Flags always 总是返回枚举标志名
d Integer always 总是返回整型
x Eight digit hex. 总是返回八位的十六进制数
5. 一些有用的示例
String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);
上面代码如果传入1243.50将输出 “$1,240.00″ 。如果传入负数,则输出相同的格式,不同的是带括号。如果传入0则输出0.


String.Format(”{0:(###) ###-####}”, 8005551212);
上面代码将输出 “(800) 555-1212″.



6. ToString的用法如下
字符串格式符号 说明 代码示例 输出
C 货币 2.5.ToString(“C”) ¥2.50
D 十进制 25.ToString(“D5”) 00025
E 科学计数法 25000.ToString(“E”) 2.500000E+005
F 固定小数点位数 25.ToString(“F2”) 25.00
G 常规 2.5.ToString(“G”) 2.5
N 数值 2500000.ToString(“N”) 2,500,000.00

X 十六进制 255.ToString(“X”) FF

 

栗子示范:

必须用“{”和“}”将格式与其他字符分开。如果恰好在格式中也要使用大括号,可以用连续的两个大括号表示一个大括号,即: “{{”或者“}}”。

常用格式举例:

(1) int i=12345;

this.textBox1.Text=i.ToString();

//结果 12345(this指当前对象,或叫当前类的实例)

this.textBox2.Text=i.ToString("d8");

//结果 00012345

(2) int i=123;

double j=123.45;

string s1=string.Format("the value is {0,7:d}",i);

string s2=string.Format("the value is {0,7:f3}",j);

this.textBox1.Text=s1 ;

//结果 the value is 123

this.textBox2.Text=s2;

//结果 the value is 123.450

(3)double i=12345.6789;

this.textBox1.Text=i.ToString("f2"); //结果 12345.68

this.textBox2.Text=i.ToString("f6");

//结果 12345.678900

(4)double i=12345.6789;

this.textBox1.Text=i.ToString("n"); //结果 12,345.68

this.textBox2.Text=i.ToString(“n4”); //结果 12,345.6789

(5)double i=0.126;

string s=string.Format("the value is {0:p}",i);

this.textBox1.Text=i.ToString("p"); //结果 12.6%

this.textBox2.Text=s; //结果 the value is 12.6%

(6) DateTime dt =new DateTime(2003,5,25);

this.textBox1.Text=dt.ToString("yy.M.d");

//结果 03.5.25

this.textBox2.Text=dt.ToString(“yyyy年M月”);

//结果 2003年5月

Convert.ToDateTime("2005/12/22 22:22:22").ToString("yyyy/ MM /dd HH :mm:ss") 
"2005/12/22 22:22:22"

(7) int i=123;

double j=123.45;

string s=string.Format("i:{0,-7},j:{1,7}",i,j);

//-7表示左对齐,占7位

this.textBox1.Text=s ;

//结果i:123 ,j: 123.45 

7.解析数字文本为数字

int a = Int32.Parse(textBox1.Text);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值