-3

我有一个单词模板,带有书签等。大部分都可以正常工作..但是我在使用 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;

问题是正如我之前所说,这个变量失去了它的范围,所以它要么不再存在,要么没有价值..
解决这个问题的最佳方法是什么..??

4

2 回答 2

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);
于 2012-11-13T15:38:41.650 回答
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 属性,它为您提供特定区域的货币符号。

于 2012-11-13T15:30:17.307 回答