你可以尝试这样的:
decimal currencyValue;
string inputCurrency = "$12.6";
if (decimal.TryParse(inputCurrency, NumberStyles.Currency, CultureInfo.CreateSpecificCulture("en-US"), out currencyValue))
{
// proceed with currencyValue
}
else
{
//Show error ; Conversion failed
}
对于处理所有的货币,你可以使用以下命令:
Dictionary<char, string> currencyCulture = new Dictionary<char, string>();
currencyCulture.Add('$', "en-US");
currencyCulture.Add('€', "en-IE");
// populate all posible values here
decimal currencyValue;
string inputCurrency = "€2,66";
char currencySymbol= inputCurrency.ToCharArray()[0];
CultureInfo currentCulture= CultureInfo.CreateSpecificCulture(currencyCulture[currencySymbol]);
if (decimal.TryParse(inputCurrency, NumberStyles.Currency, currentCulture, out currencyValue))
{
// proceed with currencyValue
}
else
{
//Show error ; Conversion failed
}
您可以从here
移到另一个国家(使用$作为货币符号和'.'作为小数点分隔符)。或者阅读'CultureInfo',因为它可能更便宜。 –
货币字符串将是动态的,不像我的示例那样硬编码。例如。 2.10美元,2,66欧元等。我如何提前了解CultureInfo? – l3utterfly
跑掉......没有用于格式化CultureInfo的知识,没有办法正确解析$ 3,100。检查所有货币符号列表并希望您正确猜测了小数点分隔符是最安全的赌注(我不会推荐这么做)。 –