你可以嘗試這樣的:
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。檢查所有貨幣符號列表並希望您正確猜測了小數點分隔符是最安全的賭注(我不會推薦這麼做)。 –