我无法将字符串转换为十进制,这是lblTotal =" 110,00€" 我想将其转换为十进制,我该如何转换它?
decimal number;
if( Decimal.TryParse(((Label)e.Item.FindControl("lblTotal")).Text.ToString(), out number))
{
}
答案 0 :(得分:3)
如果你不能解析你的字符串,可能会有一些可能性......
首先,Decimal.TryParse
使用NumberStyles.Number
样式,但不包括Currency
样式。两者都是复合风格。这就是为什么你需要使用指定货币符号和小数分隔符的另一个重载。
其次,您的Decimal.TryParse
默认使用CurrentCulture
设置。这意味着,CurrencySymbol
不是€
和/或您的NumberDecimalSeparator
不是,
。
作为最佳解决方案,您可Clone
CurrentCulture
Currency
并使用var clone = (CultureInfo) CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.CurrencySymbol = "€";
clone.NumberFormat.NumberDecimalSeparator = ",";
decimal number;
if(decimal.TryParse(((Label)e.Item.FindControl("lblTotal")).Text,
NumberStyles.Currency, clone, out number))
{
// You can use number here
}
样式设置这些属性;
GoogleMap
答案 1 :(得分:2)
您应该告知Decimal.TryParse您有货币符号以及您的文化
string test = "110,00€";
if( Decimal.TryParse(test, NumberStyles.Currency, CultureInfo.CurrentCulture, out number))
{
Console.WriteLine(number);
}
我还建议您使用更具防御性的方法来检索要解析的标签。
Label lbl = e.Item.FindControl("lblTotal") as Label;
if(lbl != Null)
{
.....
}
答案 2 :(得分:0)
您可以将CultureInfo.CreateSpecificCulture与使用欧元作为货币的国家/地区的文化代码一起使用。
Table of Language Culture Names, Codes, and ISO Values Method
例如希腊,爱尔兰,意大利使用这种货币。
简单地
decimal resault = decimal.Parse(((Label)e.Item.FindControl("lblTotal")).Text.ToString()
,NumberStyles.Currency
,CultureInfo.CreateSpecificCulture("it-IT"));
这会将您的字符串"110,00€"
正确转换为十进制,因为意大利使用欧元(€
)作为货币。
或者您可以通过搜索提供的链接使用其他文化。