如何接受"$ 1,250.00"之类的字符串并将其转换为C#中的小数?

3 c# string currency decimal

如何接受"$ 1,250.00"之类的字符串并将其转换为C#中的小数?

我只是做一个替换("$","")和(",","")或者我应该采用不同的方式来处理这种输入吗?

Jar*_*Par 20

您是否使用AllowCurrencySymbol选项(以及其他支持选项)尝试过Decimal.Parse?

var d = Decimal.Parse(input, 
  NumberStyles.AllowCurrencySymbol |
  NumberStyles.AllowDecimalPoint |
  NumberStyles.AllowThousands);
Run Code Online (Sandbox Code Playgroud)


Luk*_*fer 5

现在格式化:)

decimal val = Decimal.Parse(
    Value.Replace(" ", ""), 
    NumberStyles.AllowThousands 
     | NumberStyles.AllowDecimalPoint 
     | NumberStyles.AllowCurrencySymbol
);
Run Code Online (Sandbox Code Playgroud)

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


jas*_*son 5

我只做一个Replace("$", "")Replace(",", "")[?]

不可以.例如,这样的代码维护起来并不好玩.其次,'$'并不是世界上唯一的货币符号,'''不是唯一的千人.也就是说,像你一样的代码使全球化问题变得困难.

[我]有不同的方式来处理这种输入吗?

是.使用Decimal.ParseNumberStyles.Currency:

string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
Run Code Online (Sandbox Code Playgroud)