2014-10-06 53 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