枚举到格式化字符串

时间:2011-03-19 17:07:31

标签: c# asp.net enums

public enum WebWizDateFormat
{
    DDMMYY,
    MMDDYY,
    YYDDMM,
    YYMMDD
}

public class WebWizForumUser
{
    public WebWizDateFormat DateFormat { get; set; }

    public WebWizForumUser()
    {
        this.DateFormat = WebWizDateFormat.DDMMYY;
        HttpContext.Current.Response.Write(this.DateFormat);
    }
}

这样可行,但是当我响应它时,它需要以“dd / mm / yy”格式出现,我该怎么做?

4 个答案:

答案 0 :(得分:6)

简单的答案是不要使用枚举。静态类怎么样?

public static class WebWizDateFormat
{
    public const string USFormat = "MM/DD/YY";
    public const string UKFormat = "DD/MM/YY";
}

// . . .
string dateFormat = WebWizDateFormat.USFormat;

(只是一个示例,将字段重命名为适合您的任何内容。)

答案 1 :(得分:0)

最简单的方法就是使用你用枚举的相应字符串表示填充的Dictionary<WebWizDateFormat,string>,即

DateMapping[WebWizDateFormat.DDMMYY] = "dd/mm/yy";

然后你可以做

HttpContext.Current.Response.Write(DateMapping[this.DateFormat]);

答案 2 :(得分:0)

您对此转换的规定不明确。你可以这样做:

this.DateFormat.ToLower().Insert(4, "\\").Insert(2,"\\");

但我怀疑,这就是你的意思...... ;-)
这也可能对您有所帮助:Enum ToString with user friendly strings

答案 3 :(得分:0)

序言:我建议不要使用枚举项名称来表示数据(给定枚举值和类型的can get the string name)。我还建议使用隐式分配的枚举值作为微妙的更改,例如添加或删除枚举项可能会产生微妙的不兼容的更改/错误。

在这种情况下,我可能只是创建一个从枚举值到字符串格式的映射,例如:

public enum WebWizDateFormat
{
    DDMMYY = 1,
    MMDDYY = 2,
    YYDDMM = 3,
    YYMMDD = 4,
    // but better, maybe, as this abstracts out the "localization"
    // it is not mutually exclusive with the above
    // however, .NET *already* supports various localized date formats
    // which the mapping below could be altered to take advantage
    ShortUS = 10, // means "mm/dd/yy",
    LongUK = ...,
}

public IDictionary<string,string> WebWizDateFormatMap = new Dictionary<string,string> {
    { WebWizDateFormat.DDMMYY, "dd/mm/yy" },
    // "localized" version, same as MMDDYY
    { WebWizDateFormat.ShortUS, "mm/dd/yy" },
    ... // define for -all-
};

// to use later
string format = WebWizDateFormatMap[WebWizDateFormat.ShortUS];

快乐编码