“ $ 1,250.00”などの文字列を受け入れるにはどうすればよいですかそれをC#で10進数に変換しますか?

StackOverflow https://stackoverflow.com/questions/1210553

  •  06-07-2019
  •  | 
  •  

質問

" $ 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
);

http://www.codeproject.com/KB/cs/Eduardo_Sierra.aspx

これでうまくいくはずです:


      string money = "$1,250.00";
      money = money.Replace(',' ');
      decimal test = Convert.ToDecimal(money);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top