我有一个单词模板,带有书签等等。大部分工作都很好..但是我在使用switch语句时遇到了麻烦..我的范围超出了它的范围。
我检查应用于保险费的货币类型,如果它的“磅”然后用“£”符号替换文本“磅”,欧元和美元等相同。
我在这里的原因是要求提出建议或确认我的想法是正确和可能的。
我认为可行的是,如果你是一个单独的'方法/功能',但是缺乏从哪里开始的知识/专业知识。
我已经去了,但是Visual Studio却没有...这里是switch语句:
switch (sCurrency.Trim())
{
case "Pounds":
sCurType = "L";
break;
case "Euros":
sCurType = "€";
break;
case "Dollars":
sCurType = "$";
break;
default:
sCurType = " ";
break;
}
然后继续以这种方式使用:
t_tbl.Cell(2, 2).Range.Text = sCurType + iExcess;
问题就像我之前所说的那样,这个变量失去了它的范围,所以它不再存在或者没有价值。答案 0 :(得分:3)
我建议让框架处理货币时的实际格式。问题是它不仅仅是获得正确的符号那么简单,你需要格式化实际值本身,即符号位置,小数点分隔符等。所以,而不是找出使用哪个符号,看看工作哪个文化您希望将格式设置为例如
public CultureInfo GetCultureForCurrency(string currency)
{
switch (currency)
{
case "Pounds":
return new CultureInfo("en-GB"); // GBP (UK)
case "Euros":
return new CultureInfo("fr-FR"); // Euros (France)
case "Dollars":
return new CultureInfo("en-US"); // Dollars (USA)
break;
default:
return Thread.CurrentCulture; // Default system culture
}
}
<强>用法强>
var culture = GetCultureForCurrency("Dollars");
t_tbl.Cell(2, 2).Range.Text = iExcess.ToString("C", culture);
答案 1 :(得分:1)
您可以使用以下方法执行此操作:
private string ToCurrencySymbol(string currency)
{
string currencySymbol = null;
switch (currency.Trim().ToLower())
{
case "pounds":
currencySymbol = "£";
break;
case "euros":
currencySymbol = "€";
break;
case "dollars":
currencySymbol = "$";
break;
default:
currencySymbol = " ";
break;
}
return currencySymbol
}
然后你会这样打电话:
t_tbl.Cell(2, 2).Range.Text = ToCurrencySymbol(sCurrency) + iExcess;
但实际上您应该使用RegionInfo类,它具有CurrencySymbol属性,该属性为您提供特定区域的货币符号。