c# - 枚举和字符串匹配

标签 c# enums

我实际上是在尝试读取 xml 文件。其中一个值有一个后缀,例如“30 天”。这意味着“30 天”。所以我试图将其转换为 DateTime.Now.AddDays(30)。要读取 XML 中的这个字段,我决定使用枚举:

enum DurationType { Min = "m", Hours = "h", Days = "d" }

现在我不太确定如何有效地解决这个问题(我对枚举有点傻)。我是否应该先将后缀(在本例中为“d”)从字符串中分离出来,然后尝试使用 switch 语句在 enum 中匹配它?

我想如果您把我的问题简化为:从 30dDateTime.Now.AddDays(30) 的最佳方式是什么?

最佳答案

你可以创建一个 ExtensionMethod 来解析字符串并返回你想要的 DateTime

类似于:

    public static DateTime AddDuration(this DateTime datetime, string str)
    {
        int value = 0;
        int mutiplier = str.EndsWith("d") ? 1440 : str.EndsWith("h") ?  60 : 1;
        if (int.TryParse(str.TrimEnd(new char[]{'m','h','d'}), out value))
        {
            return datetime.AddMinutes(value * mutiplier);
        }
        return datetime;
    }

用法:

 var date = DateTime.Now.AddDuration("2d");

关于c# - 枚举和字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15079227/

相关文章:

c# - 空构造函数或无构造函数

ios - 创建 switch 语句给我错误

c# - 动态添加项目到 ItemsControl

c# - 尝试从第三方api同步数据

c# - WPF 保持键盘焦点

c# - 如何将一个 COM 类实例作为参数传递给 C# 中的另一个 COM 方法?

c - 在枚举中包含 .csv 如何工作?

java - Android View 枚举

c++ - 链接两个枚举类型成员

将字符串转换为枚举并传入结构