2012-12-14 8 views
17

私はこれが機能しない理由は考えていません:文字列を通貨記号で小数点まで解析する方法は?

string s = "12,00 €"; 
var germanCulture = CultureInfo.CreateSpecificCulture("de-DE"); 
decimal d; 
if (decimal.TryParse(s, NumberStyles.AllowCurrencySymbol, germanCulture, out d)) 
{ 
    // i want to get to this point 
    Console.WriteLine("Decimal value: {0}", d); 
} 

答えて

27

利用NumberStyles.Currency代わりのNumberStyles.AllowCurrencySymbol

if (decimal.TryParse(s, NumberStyles.Currency, germanCulture, out d)) 

とのあなたのコードの出力は次のようになります。

Decimal value: 12.00 
+0

どうもありがとう:) –

+0

@TimSchmelter、あなたを歓迎します:) – Habib

+6

もう少し情報これがそうである理由を説明します NumberStyles.AllowCurrencySymbolは、解析プロセスの一部として無視される通貨記号を許可します。追加の空白と小数点の区切り文字には、AllowDecimalPointとAllowTrailingWhiteを有効にするための追加のフラグが必要です。通貨は、これらのフラグ(といくつかの他のもの)を組み合わせます。[link](http://msdn.microsoft.com/en-us/library/0xh24xh4.aspx) –

0

はこれを試してみてください。

string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234); 

123423.083234を$ 1,23,423フォーマットに変換します。

+1

通貨記号を含む文字列を10進数に解析する必要がありました。与えられた小数を文字列に変換しています。だからそれは別の要件です。しかし、すでに答えられています。 –

関連する問題