Format问题

ZHUIG 2003-09-29 10:39:28
偶刚开始学习C#,对在书中的这一段话不理解:
string.Format("\t{0, - 31}{1, - 20}{2,8},","dddd","ffff","gggg")
主要是Format中的{n, - m}的意思。
...全文
55 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhgj 2003-09-29
  • 打赏
  • 举报
回复
ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconformattingtypes.htm
xixigongzhu 2003-09-29
  • 打赏
  • 举报
回复
这个也许更全面:ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconcompositeformatting.htm
如果不是2003中文版,请截取cpguidenf/html/cpconcompositeformatting.htm。

下面是文档的一部分内容:
通过 .NET Framework 复合格式化功能,您可以提供值列表和由交替出现的固定文本和索引占位符组成的源字符串,还能轻松地获得由夹杂着格式化值的原始固定文本组成的结果字符串。复合格式化可以用于一些方法,如 String.Format(返回格式化字符串)方法和 Console.WriteLine(将输出字符串显示到控制台)方法等,也可用于 TextWriter.WriteLine(将输出字符串写到流或文件)的实现。

每个索引占位符或格式项都对应值列表中的一个元素。复合格式化功能返回新的输出字符串,其中嵌入源字符串的每个格式项都被对应的格式化值替换。

源字符串包含被一个或多个格式项分隔开的零个或多个固定文本段。固定文本可以包含您选择的任何内容。

下面是一个 String.Format 示例。

[Visual Basic]
Dim myName As String = "Fred"
String.Format("Name = {0}, hours = {1:hh}", myName, DateTime.Now)

[C#]
string myName = "Fred";
String.Format("Name = {0}, hours = {1:hh}", myName, DateTime.Now);

固定文本是“Name =”和“, hours =”,格式项是“{0}”和“{1:hh}”,值为 myName 和 DateTime.Now。

格式项语法
所有格式项都采用下面的形式。

{index[,alignment][:formatString]}

必须使用成对的大括号(“{”和“}”)。因为左右大括号分别被解释为格式项的开始和结束,所以要在固定文本中显示一个左括号(“{”),必须指定两个左括号(“{{”);要在固定文本中显示一个右括号(“}”),必须指定两个右括号(“}}”)。

格式项由下面的组件构成。

索引组件
强制“索引”组件(也叫参数说明符)是一个从 0 开始的数字,可标识值列表中对应的元素。也就是说,参数说明符为 0 的格式项格式化列表中的第一个值,参数说明符为 1 的格式项格式化列表中的第二个值,依次类推。

通过指定相同的参数说明符,多个格式项可以引用值列表中的同一个元素。例如,通过指定类似于“{0:X} {0:E} {0:N}”的源字符串,可以将同一个数值格式化为十六进制、科学表示法和数字格式。

每一个格式项都可以引用所有的参数。例如,如果有三个值,则可以通过指定类似于“{1} {0} {2}”的源字符串来格式化第二、第一和第三个值。格式项未引用的值会被忽略。如果参数说明符指定了超出值列表范围的项,将导致运行时异常。

对齐组件
可选的“对齐”组件是一个带符号的整数,指示首选的格式化字段宽度。如果“对齐”值小于格式化字符串的长度,“对齐”会被忽略,并且使用格式化字符串的长度作为字段宽度。如果“对齐”为正数,字段的格式化数据为右对齐;如果“对齐”为负数,字段的格式化数据为左对齐。如果需要填充,则使用空白。如果指定“对齐”,就需要使用逗号。

格式字符串组件
可选的“格式字符串”组件由标准或自定义格式说明符组成。如果不指定“格式字符串”,则使用常规(“G”)格式说明符。如果指定“格式说明符”,需要使用冒号。

处理顺序
如果要格式化的值是 null(在 Visual Basic 中为 Nothing),则返回空字符串 ("")。

如果要格式化的类型实现 ICustomFormatter 接口,则调用 ICustomFormatter.Format 方法。

如果前面的步骤未格式化类型,并且该类型实现 IFormattable 接口,则调用 IFormattable.ToString 方法。

如果前面的步骤未格式化类型,则调用该类型的 ToString 方法(从 Object 类继承而来)。

前面的步骤执行完毕之后应用对齐。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧