博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
这种写法用过没:string.Format("{0,-10}", 8)
阅读量:6948 次
发布时间:2019-06-27

本文共 1325 字,大约阅读时间需要 4 分钟。

初见 string.Format("{0,-10}", 8)

做 .net 开发也若干年了,如此写法(下面代码中黄色高亮部分)确是我第一次见(更别提用了):

1234
var s1 = string.Format("{0}", 8);var s2 = string.Format("{0}", 8);var s3 = string.Format("{0:yyyy-MM-dd}", DateTime.Today);var s4 = string.Format("4G 内存便宜了{0:C2},我打算买{1}条", 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,则格式项将被 替换。 由于该重载在其参数列表中只有单个对象,index 的值必须始终为 0。 如果 index 位置没有参数,将引发 。

,length

参数的字符串表示形式中包含的最小字符数。 如果该值是正的,则参数右对齐;如果该值是负的,则参数左对齐。

:formatString

要设置格式的对象支持的标准或自定义格式字符串。 formatString 的可能值与该对象的 ToString(format) 方法支持的值相同。 如果没有指定 formatString,并且要设置格式的对象实现了 接口,则将传递 null 作为用作 格式字符串的 format 参数的值。

MSDN 原文链接:

优点和缺点

优点:

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

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

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

缺点:

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

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

转载地址:http://lihnl.baihongyu.com/

你可能感兴趣的文章
qtp试用期30天已经过了就无法使用,解决办法
查看>>
winform文本框怎么实现html的placeholder效果
查看>>
认识CSS样式
查看>>
[转]SQLITE3 C语言接口 API 函数简介
查看>>
Delphi XE5中使用jar包
查看>>
Python3的tcp socket接收不定长数据包接收到的数据不全。
查看>>
b2b
查看>>
第三周Java学习总结
查看>>
OGRE的安装和编译【转+改】
查看>>
获取管理员组用户
查看>>
Mysql—(2)—
查看>>
简历的分布式
查看>>
LeetCode:Rotate Array
查看>>
jquery pagination.js 分页
查看>>
DOM对象与jquery对象
查看>>
XXS level8
查看>>
分布式日志收集系统:Facebook Scribe
查看>>
VxWorks下PCI驱动的配置与测试
查看>>
NSString 中包含中文字符时转换为NSURL
查看>>
多个文本框点击复制 zClip (ZeroClipboard)有关问题
查看>>