2010-04-19 148 views
2

我觉得我想要做一些简单的事情,但我没有得到我想要的结果。我想显示一个基本的数字,这将始终是积极的。我不想要任何前导零,但我需要数千个分隔符。例如,对于下面的投入,我想以下的输出:C#+字符串格式化

3 -> 3 
30 -> 30 
300 -> 300 
3000 -> 3,000 
30000 -> 30,000 
300000 -> 300,000 

目前,在试图做到这一点,我使用以下格式代码:

string text = "*Based on " + String.Format("{0:0,0}", total) + " entries"; 

目前,输出看起来像这样:

3 -> 03 
3000 -> 3,000 

您可以看到如何在不需要千位分隔符时添加前导“0”。如何正确格式化我的号码?

谢谢

+0

闻起来像功课! – Nayan 2010-04-19 20:34:42

+0

不,它不!什么让你有那个想法? – 2010-04-19 21:25:40

回答

8
string.Format(new CultureInfo("en-US"), "{0:N0}", total) 

参见:Standard Numeric Format Strings

- 或 -

string.Format(new CultureInfo("en-US"), "{0:#,#}", total) 

参见:Custom Numeric Format Strings

+0

第一个将添加一个小数位,第二个不会。 – 2010-04-19 20:38:30

+0

注意'N0'中的'0' - 这指定了小数位数。 – dtb 2010-04-19 20:41:11

1

试试这个格式。

{0:#,##0}

1

你也可以这样做:

string text = "*Based on " + total.ToString("#,##0") + " entries"; 
2

除了其他伟大的意见,你不应该使用字符串连接操作员。简单地做到这一点:

string text = string.Format("*Based on {0:#,##0} entries", total); 

这使得它更容易阅读,并且需要更少的工作。

0

下面是使用PowerShell的示例。重要的一点是格式字符串是"{0:n0}"

3, 30, 300, 3000, 30000, 300000, 3000000, 30000000 | 
    %{ "{0} -> {0:n0}" -f $_ } 

哪个生产:

PS C:\用户\达米安> 3,30,300,3000,30000,300000,3000000,30000000 | %{“{0} - > {0:n0}”-f $ _}

3 -> 3 
30 -> 30 
300 -> 300 
3000 -> 3,000 
30000 -> 30,000 
300000 -> 300,000 
3000000 -> 3,000,000 
30000000 -> 30,000,000