我想将国家缩写转换为全名 我的代码:
public string Convert(string country)
{
if (country == nameof(AC)) return AC;
if (country == nameof(AF)) return AF;
if (country == nameof(AX)) return AX;
if (country == nameof(AL)) return AL;
if (country == nameof(DZ)) return DZ;
return country;
}
public const string
AC = "ASCENSION ISLAND",
AF = " AFGHANISTAN",
AX = " ALAND",
AL = " ALBANIA",
DZ = " ALGERIA",
AD = " ANDORRA",
它可以工作,但是我想知道是否有可能使其变得更容易。 因为如果我在所有国家/地区都无法做到,那就太长了。
答案 0 :(得分:1)
简单
public string Convert(string country)
{
string result = string.Empty;
FieldInfo fieldInfo = GetType().GetField(country);
result = fieldInfo?.GetValue(this)?.ToString();
return result;
}
答案 1 :(得分:1)
我经常将enum
与属性一起使用来解决这类问题。这是非常方便且良好的编码约定。您可以尝试此解决方案
using System;
using System.Reflection;
namespace CountryEnum
{
class Program
{
static void Main(string[] args)
{
// Using enum
COUNTRY_CODE enum_variable = COUNTRY_CODE.AF;
Console.WriteLine("Enum variable: " + Program.GetEnumDescription(enum_variable));
// Have short code string of country as input -> convert it to enum
string country_code = "AL";
COUNTRY_CODE convertResult = COUNTRY_CODE.UNKNOWN;
Enum.TryParse(country_code, out convertResult);
Console.WriteLine("string variable: " + Program.GetEnumDescription(convertResult));
Console.ReadLine();
}
/// <summary>
/// GET string description
/// </summary>
/// <param name="en"></param>
/// <returns></returns>
public static string GetEnumDescription(Enum en)
{
Type type = en.GetType();
try
{
MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(EnumDisplayString), false);
if (attrs != null && attrs.Length > 0)
return ((EnumDisplayString)attrs[0]).DisplayString;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return en.ToString();
}
}
public enum COUNTRY_CODE
{
[EnumDisplayString("AFGHANISTAN")]
AF
,
[EnumDisplayString("ALBANIA")]
AL
,
[EnumDisplayString("UNKNOWN")]
UNKNOWN
}
public class EnumDisplayString : Attribute
{
public string DisplayString;
public EnumDisplayString(string text)
{
this.DisplayString = text;
}
}
}
答案 2 :(得分:1)
我建议使用字典将国家/地区代码存储为键,将国家/地区名称存储为值。像这样:
Public Dictionary<string, string> countryCodes = new Dictionary<string, string>
{
{ "AC", "ASCENSION ISLAND" },
{ "AF", "AFGHANISTAN" },
{ "AX", "ALAND" },
{ "AL", "ALBANIA" }
//Keep adding countries as you need
};
然后,您不需要使用convert方法来获取国家/地区名称,您只需使用国家/地区代码从词典中获取该国家/地区代码的值即可。
赞:
(假定字符串变量countryCode
包含2个字符的国家/地区代码)
string countryName = countryCodes[countryCode];