使用Regex替换字符串中的匹配日期代码

时间:2018-04-13 09:38:49

标签: c# regex datetime

我想知道以下是否可以某种方式重构为一种更通用的方式来替换字符串中的日期代码。 我只想替换前。 “filenameMMddyyyy”和“filename04132018”。 我希望它也可以使用“filename_yyyy”,“filenameddMM”,“filename_DDmmYYYY”等格式

filename = Regex.Replace(filename, "dd", DateTime.Now.ToString("dd"), RegexOptions.IgnoreCase);
filename = Regex.Replace(filename, "MM", DateTime.Now.ToString("MM"), RegexOptions.IgnoreCase);
filename = Regex.Replace(filename, "yyyy", DateTime.Now.ToString("yyyy"), RegexOptions.IgnoreCase);

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

简单地使用这样的代码:

var formattedString = $"filename{DateTime.Now.ToString("MMddyyyy")}";

这里不需要正则表达式。我认为你不能做得更通用。我会简单地简化它:

static void Main(string[] args)
{
    var filename1 = ReplaceFileName("filenameMMddyyyy");
    var filename2 = ReplaceFileName("filename_yyyy");
    var filename3 = ReplaceFileName("filenameddMM");
}

private static string ReplaceFileName(string filename)
{
    var dateTime = DateTime.Now;
    filename = filename.Replace("dd", dateTime.ToString("dd"));
    filename = filename.Replace("MM", dateTime.ToString("MM"));
    filename = filename.Replace("yyyy", dateTime.ToString("yyyy"));
    return filename;
}