使用.NET字符串格式,如何格式化字符串以显示空(空字符串)为零(0)?

时间:2010-02-17 16:46:51

标签: .net formatting string-formatting string.format

我在ASP.NET Datagrid中使用DataBinder.Eval表达式,但我认为这个问题一般适用于.NET中的String格式。客户已请求如果字符串的值为0,则不应显示该字符串。我有以下黑客来实现这个目标:

<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "", 
    DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}"))  %>

我想更改{0:N0}格式表达式,以便我可以删除IIf语句,但找不到任何有用的语句。

4 个答案:

答案 0 :(得分:10)

您需要使用section separator,如下所示:

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

请注意,只有否定部分可以为空,因此我需要在0部分中添加空格。 (阅读documentation

答案 1 :(得分:3)

鉴于接受的答案:

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

a空格位于第3个位置,但是将#放在第3个位置将无需拨打Trim()

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>

答案 2 :(得分:0)

使用自定义方法。

public static string MyFormat(double value) {       
    return value == 0 ? "" : value.ToString("0");
}

<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>

答案 3 :(得分:0)

尝试像这样绑定时调用函数

<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>

并在函数内部进行所需的格式化