2014-10-06 57 views
3

我遇到了ToString()问题。我想从这个显示我的整个数量:使用ToString()格式显示整数ASP.net

150000 

要这样:

150 000 

这里是我的尝试:

string myNumber = Convert.ToInt64(input_value.Text).ToString("D"); 

string myNumber是一个变量,我会关联到标签显示用户输入的值(input_value)。该值是<asp:TextBox>。最后,我想为每个3位数字添加一些空格以使值更清晰。

有没有其他解决方案在ASP.net中做同样的事情?因为这似乎不起作用。

注:我也试图与[...].ToString("N1");和它的作品完美,但我并不想在显示结果150 000.0,这是不正确的全数字格式的最后.0

回答

0

您可以使用#符号在你的结果与空间DELIM设置为指定的位数:

string num = Convert.ToInt64(input_value.Text). 
         ToString("# ### ### ### ### ### ###"). 
         Trim(); 
//Output 150 000 and covers any Int64 digit in input_value.Text 
+0

这将如何工作的大数字(尝试与1000000)? – Ofiris 2014-10-06 08:41:07

+1

就像Ofiris说的那样,这个解决方案的局限在于,如果你不知道用户输入的数字长度,那么如果数字太大,你不能阻止解决方案达到100%。但非常感谢你的帮助。 – 2014-10-06 08:46:06

+0

@ofiris为此,我们可以使用### ### ###。如果我们预计max为Int64,则ToString(“#### ### ### ### ### ### ###”)将覆盖所有Int64案例 – Alex 2014-10-06 08:46:41

2

对不起poluate。我发现我的问题。让我来解释:

我没有得到,在N1格式化时,1意味着“逗号后1位”。所以我只需要设置格式字符串为n0

+0

但是这会给你带''的结果,是你想要的吗? – Ofiris 2014-10-06 08:38:19

+0

这取决于当前的文化 – Reniuz 2014-10-06 08:42:53

+0

这种格式最棒的是,它获得您运行程序的当前位置(例如,我位于巴黎)。因此,如果您来自欧盟,您的号码将自动适合欧盟通用的整数数字格式,其中显示3位数字之间的一些空格。而你可能在美国国家运行我的片段,所以它会给你一些昏迷! – 2014-10-06 08:44:07

5

您可以创建自定义NumberFormatInfo" "为千位分隔符:

var formatInfoWithSpaceGroupSep = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone(); 
formatInfoWithSpaceGroupSep.NumberGroupSeparator = " "; 
formatInfoWithSpaceGroupSep.NumberDecimalDigits = 0; // or "N0" instead of "N" below 
Console.Write(num.ToString("N", formatInfoWithSpaceGroupSep)); //123 234 000 

你必须使用N format specifier支持组分隔符,而不是D

+0

谢谢@Tim Shmelter,它工作完美,比我自己的解决方案更可靠:)。 – 2014-10-06 09:15:02