gpt4 book ai didi

c# - 用货币符号解析值

转载 作者:行者123 更新时间:2023-11-30 20:37:28 31 4
gpt4 key购买 nike

我已经查看了多个关于解析货币的 SO 问题,最好的(推荐的)方法似乎是我在下面尝试的方法:

var payout = decimal.Parse("$2.10", NumberStyles.Currency | NumberStyles.AllowDecimalPoint);

但是,它抛出异常:输入字符串的格式不正确。

我不知道我做错了什么?

编辑

感谢您的回答。附加信息:我给出的硬编码货币值只是一个例子。我有一个货币列表:

€2,66

$2.10

$5.55

etc.

我无法提前确定文化信息。有什么想法吗?

最佳答案

类似的方法 @un-lucky 被提到作为答案之一,我试着让它通用并适用于每个 Symbol/Format

public static decimal ParseCurrencyWithSymbol(string input)
{
var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures)
.GroupBy(c=> c.NumberFormat.CurrencySymbol)
.ToDictionary(c=> c.Key, c=>c.First());


var culture = cultures.FirstOrDefault(c=>input.Contains(c.Key));

decimal result = 0;
if(!culture.Equals(default(KeyValuePair<string,CultureInfo>)))
{
result = decimal.Parse(input, NumberStyles.Currency | NumberStyles.AllowDecimalPoint, culture.Value);
}
else
{
if( !decimal.TryParse(input, out result))
{
throw new Exception("Invalid number format");
}
}

return result;
}

用法

decimal output = ParseCurrencyWithSymbol("$2.10");

工作 Code

关于c# - 用货币符号解析值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001525/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com