C# 字符串格式化

在C#中格式化字符串

简介

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

正文

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

1. 字符串Strings

SampleGenerates
String.Format(”->{1,10}<-”, “Hello”);-> Hello<-
String.Format(”->{1,-10}<-”, “Hello”);->Hello <-

2. 数值Numbers

基本数字格式说明符:

SpecifierTypeFormatOutput (Passed Double 1.42)Output (Passed Int -12400)
cCurrency{0:c}$1.42-$12,400
dDecimal (Whole number){0:d}System.FormatException-12400
eScientific{0:e}1.420000e+000-1.240000e+004
fFixed point{0:f}1.42-12400.00
gGeneral{0:g}1.42-12400
nNumber with commas for thousands{0:n}1.42-12,400
rRound trippable{0:r}1.42System.FormatException
xHexadecimal{0:x4}System.FormatExceptioncf90

自定义数值格式:

SpecifierTypeExampleOutput (Passed Double 1500.42)Note
0Zero placeholder{0:00.0000}1500.4200Pads with zeroes.
#Digit placeholder{0:(#).##}(1500).42
.Decimal point{0:0.0}1500.4
,Thousand separator{0:0,0}1,500Must be between two zeroes.
,.Number scaling{0:0,.}2Comma adjacent to Period scales by 1000.
%Percent{0:0%}150042%Multiplies by 100, adds % sign.
eExponent placeholder{0:00e+0}15e+2Many exponent formats available.
;Group separator see below

在格式化货币值时,如果要求负数值放在圆括号里,则分号非常有用。货币值格式化的例子在本文的底部说明。

3. 日期Dates

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

SpecifierTypeExample(Passed System.DateTime.Now)
dShort date10/12/2002
DLong dateDecember 10, 2002
tShort time10:11 PM
TLong time10:11:29 PM
fFull date & timeDecember 10, 2002 10:11 PM
FFull date & time (long)December 10, 2002 10:11:29 PM
gDefault date & time10/12/2002 10:11 PM
GDefault date & time (long)10/12/2002 10:11:29 PM
MMonth day patternDecember 10
rRFC1123 date stringTue, 10 Dec 2002 22:11:29 GMT
sSortable date string2002-12-10T22:11:29
uUniversal sortable, local time2002-12-10 22:13:50Z
UUniversal sortable, GMTDecember 11, 2002 3:13:50 AM
YYear month patternDecember, 2002

“U”说明符看起来像损坏似得,这个字符串肯定不能排序的。

自定义日期格式:

SpecifierTypeExampleExample Output
ddDay{0:dd}10
dddDay name{0:ddd}Tue
ddddFull day name{0:dddd}Tuesday
f, ff, …Second fractions{0:fff}932
gg, …Era{0:gg}A.D.
hh2 digit hour{0:hh}10
HH2 digit hour, 24hr format{0:HH}22
mmMinute 00-59{0:mm}38
MMMonth 01-12{0:MM}12
MMMMonth abbreviation{0:MMM}Dec
MMMMFull month name{0:MMMM}December
ssSeconds 00-59{0:ss}46
ttAM or PM{0:tt}PM
yyYear, 2 digits{0:yy}02
yyyyYear{0:yyyy}2002
zzTimezone offset, 2 digits{0:zz}-05
zzzFull timezone offset{0:zzz}-05:00
:Separator{0:hh:mm:ss}10:43:20
/Separator{0:dd/MM/yyyy}10/12/2002

4. 枚举Numerations

SpecifierType翻译
gDefault (Flag names if available, otherwise decimal)默认(如果能获得枚举标志名,则返回标志名,否则返回十进制数
fFlags always总是返回枚举标志名
dInteger always总是返回整型
xEight 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

翻译自

http://blog.csdn.net/21aspnet/article/details/1534643

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值