String.Format解释

时间:2011-09-15 22:18:25

标签: c#

我对理解如何为以下行生成格式感到困惑。

任何人都可以提供我,它如何以格式呈现值,使用适当的逗号,放在图中的正确位置。

writer.Write(string.Format("Your Estimated Loan Paymement+will be {0:$#,##0.00;($#,##0.00);Zero}", + this.calcPayment(this._pv,1,2) ));

这里calcPayment()是一个函数返回一个数值。例如,如果它返回2000.33,那么它将被输出为$ 2,003.33。

我知道它正在进行格式化,但是怎么做?

谢谢。

3 个答案:

答案 0 :(得分:7)

分解格式字符串:{0:$#,##0.00;($#,##0.00);Zero}

共有3组:

  1. $#,##0.00 - 在参数(this.calcPayment(this._pv,1,2)时使用 在这种情况下)是积极的。
  2. ($#,##0.00) - 当arg为负时使用
  3. Zero - 当arg为零时使用
  4. #是一个数字占位符,0是零占位符(填充)。

    有关详细信息,请参阅this

答案 1 :(得分:2)

格式字符串部分中的逗号(例如$#,##0.00)告诉它是否放置逗号(或者,如@svick正确陈述,“组分隔符”),如果需要。这是一个体面的参考,描述格式代码中间的代码:http://blog.stevex.net/string-formatting-in-csharp/

正在发生的事情是Format方法(函数)使用格式字符串作为模板,然后添加您提供的其他数据。

答案 2 :(得分:0)

我会猜测它是这样的:

0: //this is telling it that this is the zero placeholder in the format string
$#,##0.00 //this is what happens if the value is above zero
($#,##0.00) //this is for values below zero
Zero //literal "Zero" output if the value is equal to zero

编辑 - 从@ Jon的评论链接中读取custom numeric format strings确认三个以分号分隔的部分确实指定了正值,负值和零值的格式。