2012-12-15 64 views
3

這是功能格式化包含數字只到$貨幣C# - 我可以解析已經格式化爲貨幣的文本嗎?

private String GLOBALIZE_TEXT(String originalText) 
{ 
    decimal parsed; 
    CultureInfo myCultureInfo; 
    string formattedText = ""; 

    //use try catch to prevent larger inputs 
    try 
    { 
     parsed = decimal.Parse(originalText, CultureInfo.InvariantCulture); 
     myCultureInfo = new CultureInfo("$"); 
     formattedText = string.Format(myCultureInfo, "{0:c}", parsed); 
    } 
    catch (Exception ignorethis) 
    { 
    } 
    return formattedText; 
} 

現在使用的文字:

String myString = "3821"; 
myString = GLOBALIZE_TEXT(myString); 
//now my String becomes "$3,821.00" 

的問題是,我可以分析回說:「$ 3,821.00」到「3821」再一次? 我需要解析它,所以我可以使用它作爲整數,其中「3821」可以被Convert.ToInt32("3821")轉換。 或者也許那個解析的字符串也可以直接轉換爲字符串?

請讓我知道您的意見。

+0

而不是圍繞Parse包裝一個異常處理程序,您可能會發現它更容易使用TryParse:Decimal.TryParse(「$ 1.00」,Globalization.NumberStyles.Currency, –

+1

'MessageBox.Show(int.Parse(「$ 3,821.00」,NumberStyles .Currency).ToString());' – spajce

+0

@spajce你的代碼只有在我的CultureInfo是「en-US」這個$時才起作用,但是如果我把其他的「id-ID」這個是印度尼西亞的Rp,它不會回到 –

回答

3

您可以嘗試:在NumberStyles枚舉

double.Parse(myString, NumberStyles.Currency); 

更多信息,可以發現on MSDN here多的信息在這個特定double.Parse方法可以發現on MSDN here

0

也許最好問你爲什麼需要這樣做?您應該始終嘗試使用原生格式存儲值。如果您需要從捕獲或導入的字符串中執行此操作,那麼我將使用正則表達式來刪除它。

Regular expression to remove any currency symbol from a string?

+0

我同意,但處理貨幣的一個很好的方法是錢類。http://csharpmoney.codeplex.com – johan