gpt4 book ai didi

c# - 没有特定顺序的占位符 (mmddyyyy) 的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:36 27 4
gpt4 key购买 nike

我有一个如下所示的字符串:myFile{ddmmyyyy}.csv 和一个 C# DateTime 对象。我需要将 DateTime 中正确的日/月/年替换为字符串。然而,问题在于参数可以以不同的顺序排列并且并非所有参数都存在。

例如所有这些都是有效的用例:

  • 我的文件{ddmmyyyy}.csv
  • 我的文件{mmddyyyy}.csv
  • 我的文件{mmyyyy}.csv
  • 我的文件{yyyymm}.csv

对于我可以用来查找/替换这些正则表达式的任何建议/想法,我们将不胜感激!

编辑:为了清楚起见,我得到了其中包含“mmddyyyy”的实际字符串(字符,而不是相应的数字),其中“mm”需要替换月份编号(例如,10 代表十月)对于收到的日期时间。

最佳答案

private static string FormatFilename(string pattern, DateTime dt)
{
return Regex.Replace(pattern, @"\{(.*)\}", match =>
{
string format = match.Result("$1").Replace("m", "M");
return dt.ToString(format, CultureInfo.InvariantCulture);
});
}

然后就这样调用它(例如):

string input = "myFile{ddmmyyyy}.csv";
DateTime dt = new DateTime(2013, 1, 4);
string filename = FormatFilename(input, dt);

更新

可以在没有正则表达式的情况下做到这一点:

private static string FormatFilename(string pattern, DateTime dt)
{
return string.Format(pattern.Replace("{", "{0:").Replace("mm", "MM"), dt);
}

但我认为另一个版本更清晰,对输入变化更有弹性。

关于c# - 没有特定顺序的占位符 (mmddyyyy) 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19528904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com