这种写法用过没:string.Format("{0,-10}", 8)
2011-08-03 18:46
225 查看
初见 string.Format("{0,-10}", 8)
做 .net 开发也若干年了,如此写法(下面代码中黄色高亮部分)确是我第一次见(更别提用了):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)。
MSDN上的说明
String.Format 方法 format 参数由零或多个文本序列与零或多个索引占位符混合组成,其中索引占位符称为格式项,对应于与此方法的参数列表中的对象。 格式设置过程将每个格式项替换为相应对象值的字符串表示形式。格式项的语法如下:
{index[,length][:formatString]}
方括号中的元素是可选的。 下表描述每个元素。 有关复合格式设置功能(包括格式项的语法)的更多信息,请参见复合格式。
元素 | 说明 |
---|---|
索引 | 要设置格式的对象的参数列表中的位置(从零开始)。 如果由 index 指定的对象为 null,则格式项将被 String.Empty 替换。 由于该重载在其参数列表中只有单个对象,index 的值必须始终为 0。 如果 index 位置没有参数,将引发 FormatException。 |
,length | 参数的字符串表示形式中包含的最小字符数。 如果该值是正的,则参数右对齐;如果该值是负的,则参数左对齐。 |
:formatString | 要设置格式的对象支持的标准或自定义格式字符串。 formatString 的可能值与该对象的 ToString(format) 方法支持的值相同。 如果没有指定 formatString,并且要设置格式的对象实现了 IFormattable 接口,则将传递 null 作为用作 IFormattable.ToString 格式字符串的 format 参数的值。 |
优点和缺点
优点:
,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}条”。实际使用少,没用过的看了很纳闷。
相关文章推荐
- 这种写法用过没:string.Format("{0,-10}", 8)
- 初见 string.Format("{0,-10}", 8)
- 不可见字符会引起的java.lang.NumberFormatException: For input string: "15"
- 解决Android中Handler警告、SimpleDateFormat警告、"String".toUpperCase()警告
- mybatis中SQL语句单双引号的问题java.lang.NumberFormatException: For input string: "Y"
- java.lang.NumberFormatException: For input string: "2013-01-03 15:16:21"
- 工作总结 @{var sas = String.Format("{0:yyyy-MM-dd}", Model.DemandTime.GetValueOrDefault());}
- Struts2访问验证码异常解决OgnlValueStack:64 - ..java.lang.NumberFormatException: For input string: "1494056190
- String.split()方法想用"."分隔的写法
- java.lang.NumberFormatException: For input string:"filesId"
- java.lang.NumberFormatException: For input string: "9004@19004" 的解决办法
- DataFormatString="{0:yyyy-MM-dd}"不好用解决办法
- 解决Android中Handler警告、SimpleDateFormat警告、"String".toUpperCase()警告
- ASP.NET的gridview设置数据格式(DataFormatString="{}")与 String.Format 使用总结 .
- java中String...这种写法的意义
- 解决Android中Handler警告、SimpleDateFormat警告、"String".toUpperCase()警告
- Cause: java.lang.NumberFormatException: For input string: "COM201512220000004"
- java.lang.NumberFormatException: For input string: "${jdbc.maxActive}"
- Caused by: java.lang.NumberFormatException: For input string: "[objectHTMLDivElement]"
- 关于使用mybatis传值时出现java.lang.NumberFormatException: For input string: "C"报错记录