-1

我的程序使用国家/地区定位您的 IP 地址。当您来自德国时,它会显示 DE,当您在美国时,它将显示 US 等。

现在我的问题是如何自动将字符串从 HU 转到匈牙利。我应该创建一个项目列表或类似的东西吗?

截屏

你看,我从一个网站http://api.hostip.info/country.php获取国家信息 你看到上面的 Get IP 按钮 Country: DE 我想在德国自动改变这个

4

3 回答 3

1

您可以使用此表创建一个将短国名和长国名联系起来的对象 。

这也是另一个回答这个帖子的帖子

于 2013-08-02T00:09:26.953 回答
1

您可以创建一个字典并将键设置为您返回的结果,并将值设置为所需的国家/地区名称。在此处查看基本概述:教程

于 2013-08-01T23:56:37.307 回答
1

以下是解决此问题的两个选项:

  • 建个Dictionary<Country, string>
  • 使用Country枚举并用Description属性装饰它

构建一个Dictionary<Country, string>,像这样:

enum Country
{
    UnitedStates,
    Germany,
    Hungary
}

Dictionary<Country, string> CountryNames = new Dictionary<Country, string>
{
    { Country.UnitedStates, "US" },
    { Country.Germany, "DE" }
    { Country.Hungary, "HU" }
};

static string ConvertCountry(Country country) 
{
    string name;
    return (CountryNames.TryGetValue(country, out name))
        ? name : country.ToString();
}

现在您可以使用Dictionary<Country, string>via 静态ConvertCountry方法,如下所示:

var myCountry = ConvertCountry(Country.UnitedStates));

使用Country枚举并用Description属性装饰它,如下所示:

enum Country
{
    [Description("US")]
    UnitedStates,
    [Description("DE")]
    Germany,
    [Description("HU")]
    Hungary
}

现在您可以使用此方法获取Description属性值,如下所示:

public static string GetDescription(Enum en)
    {
        Type type = en.GetType();

        MemberInfo[] memInfo = type.GetMember(en.ToString());

        if (memInfo != null && memInfo.Length > 0)
        {
            object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);

            if (attrs != null && attrs.Length > 0)
            {
                return ((DescriptionAttribute)attrs[0]).Description;
            }
        }

        return en.ToString();
    }

使用上述方法,如下所示:

var myCountryDescription = GetDescription(Country.UnitedStates);
于 2013-08-02T00:00:15.560 回答