“ $ 1,250.00”などの文字列を受け入れるにはどうすればよいですかそれをC#で10進数に変換しますか?
質問
" $ 1,250.00"などの文字列を受け入れるにはどうすればよいですか? C#で10進数に変換しますか?
replace(" $&quot ;,"")と(&quot ;, '';"")を実行するだけですか、この種の入力を処理する別の方法がありますか?
解決
Decimal.ParseをAllowCurrencySymbolオプション(およびその他のサポートオプション)で試しましたか?
var d = Decimal.Parse(input,
NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands);
他のヒント
Replace(" $&quot ;,"")
およびReplace("&quot ;,"")
[ ?]
いいえ。たとえば、このようなコードは維持するのが楽しくありません。第二に、「$」は世界で唯一の通貨記号ではなく、「、」は数千人の分離者ではありません。つまり、あなたが考えているようなコードはグローバリゼーションの問題を難しくします。
[I]この種の入力を処理する別の方法がありますか?
はい。 Decimal.Parse
を使用します NumberStyles.Currency
:
string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
現在、書式設定あり:)
decimal val = Decimal.Parse(
Value.Replace(" ", ""),
NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint
| NumberStyles.AllowCurrencySymbol
);
これでうまくいくはずです:
string money = "$1,250.00";
money = money.Replace(',' ');
decimal test = Convert.ToDecimal(money);
所属していません StackOverflow