2013-06-05 81 views
0

我試圖在逗號之間自動添加逗號,但至今沒有成功。我可能犯了一個非常簡單的錯誤,但到目前爲止我無法弄清楚。這是我目前的代碼,但由於某種原因,我得到123456789作爲輸出。在較長的數字之間添加逗號

string s = "123456789"; 
    string.Format("{0:#,###0}", s); 
    MessageBox.Show(s); // Needs to output 123,456,789 
+4

你錯過了''{,也可以只使用'N'一般的數字格式。另外,你的輸入是一個字符串,而不是一個數字。 –

+0

如果你看格式字符串中的每個字符,你能告訴我每個字符都做什麼嗎? – Gabe

+3

您正在將格式應用於's',但您必須將其分配回's'才能在'MessageBox'中正確顯示。你正在失去'string.Format()'的輸出。 –

回答

1
var input = 123456789; 

// these two lines amount to the same thing 
Console.WriteLine(input.ToString("N0")); 
Console.WriteLine(string.Format("{0:N0}", input)); 

如果按照你的問題,你需要開始一個string

var stringInput = "123456789"; 
var input = int.Parse(stringInput); 

// these two lines amount to the same thing 
Console.WriteLine(input.ToString("N0")); 
Console.WriteLine(string.Format("{0:N0}", input)); 

你可能還需要解析/格式化時考慮文化考慮。查看採用IFormatProvider的超負荷。

+0

這工作,謝謝! –

0

看格式化MSDN上的信息數量:Standard Numeric Format Strings,或可選的自定義格式字符串:Custom Numeric Format Strings

對於自定義數字格式:

的「」字符既充當分離器組和多個縮放說明符。

double value = 1234567890; 
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture)); 
// Displays 1,234,567,890  
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture)); 
// Displays 1,235 
1

試試這個:

string value = string.Format("{0:#,###0}", 123456789); 

在你的代碼缺少初始{格式字符串,然後數字格式選項適用於數字,而你s是一個字符串。
你可以將字符串轉換爲數字與int.Parse

int s = int.Parse("123456789"); 
string value = string.Format("{0:#,###0}", 123456789); 
MessageBox.Show(value); 
1

這應該工作(你需要傳遞String.Format()一個數字,不是另一個String):

Int32 i = 123456789; 
String s = String.Format("{0:#,###0}", i); 
MessageBox.Show(s); 

但考慮格式字符串中,正在使用......正如其他人所暗示的那樣,有更清潔的選項可用。

+0

這工作。輸入始終是一個字符串,因爲它需要從外部源加載。我將它轉換爲Int32,使用您的代碼,然後將其轉換回字符串。這工作。我會盡量讓它更清潔,但仍然非常感謝您的幫助! –

0

你的代碼有太多錯誤,所以很難描述每一個細節。

請看下面的例子:

namespace ConsoleApplication1 
{ 
    using System; 

    public class Program 
    { 
    public static void Main() 
    { 
     const int Number = 123456789; 
     var formatted = string.Format("{0:#,###0}", Number); 

     Console.WriteLine(formatted); 
     Console.ReadLine(); 
    } 
    } 
} 
相關問題