这种写法用过没:string.Format("{0,-10}", 8)

1
2
3
4
var s1 = string.Format("{0,-10}", 8);
var s2 = string.Format("{0,10}", 8);
var s3 = string.Format("{0,20:yyyy-MM-dd}", DateTime.Today);
var s4 = string.Format("4G 内存便宜了{0,12:C2},我打算买{1,4}条", 145, 2);

大括号中,索引后 分号前,有一个逗号和一个整数(减号表示负数)。

string.Format("{0,-10}", 8) 等同于 string.Format("{0}", 8).PadRight(10)

string.Format("{0,10}", 8) 等同于 string.Format("{0}", 8).PadLeft(10)。

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

格式项的语法如下:

{index[,length][:formatString]}

优点:

,length 其实把 String.PadLeft 和 String.PadRight 的功能融合在的 String.Format 方法中,简化了代码的编写。

如果没有这种格式,代码写起来麻烦多了:

1
2
3
var s5 = string.Format("4G 内存便宜了{0},我打算买{1}条",
    145.ToString("C2").PadLeft(12),
    2.ToString().PadLeft(4));

缺点:

看起来不直观,复杂,如文首代码中的 “我打算买{1,4}条”。

实际使用少,没用过的看了很纳闷。

-------------------

转载:http://www.cnblogs.com/ldp615/archive/2011/08/03/string-format-with-length.html

 

posted @ 2014-04-23 17:15  醉孟子  阅读(513)  评论(0编辑  收藏  举报