2014-06-13 220 views
0

在我的ASP.net C#應用程序中,我必須從不同的數據庫檢索值並將它們存儲在字符串變量中。將字符串中的數字轉換爲貨幣格式

其中一個變量用於存儲來自意大利的產品金額(pd_amnt)。所以這裏的值是「1.000.000.000,00」的形式,但我需要將所有(。)替換爲(,),然後這些值的格式爲「1,000,000,000.00」。爲了解決這個問題,我使用了Replace(),但是失敗了,因爲沒有人能夠期待有多少個逗號(,)會出現在特定的字符串值中。

如何解決這個問題?在C#.NET中有相同的方法嗎?

protected void btnSub_Click(object sender, EventArgs e) 
    { 
       //Try1 
     double value = 1.234567890; 

     Response.Write(value.ToString("#,#", CultureInfo.InvariantCulture)); 
     Response.Write(String.Format(CultureInfo.InvariantCulture,"{0:#,#}", value)); 

        //Try2 
     string a = txtvalue.Text; 

     string b= a.ToString(new CultureInfo("en-US")); 
     txtConverted.Text = b.ToString(); 

    } 
+2

解決方法是,如果您的格式爲意大利語中的某個數字的字符串,則使用他們的CultureInfo將其解析爲數字。這將考慮千分隔符,小數分隔符和其他可能不同的格式。另外爲什麼你需要知道使用替換的逗號數量? – Chris

+0

只需使用'double.ToString'(或'decimal.ToString')的重載,它支持格式**和**文化。其實我不明白這個問題,因爲你已經在使用它了,但你提到你正在使用'String.Replace'。 –

+0

因爲我使用Replace代碼時出錯。 – user3640443

回答

1

可以使用C或C格式化貨幣:

string.Format("{0,C2}", value); 
string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:C}", value) 

或用的ToString和文化信息:

Console.WriteLine(value.ToString("C2", CultureInfo.CreateSpecificCulture("da-DK")); 

Formating

的使用,或。取決於你正在格式化的給定文化。你可以給這些格式化規則。

+0

雅這個邏輯適用於我.....感謝同行 – user3640443