我有一个包含不同数据的文本文件。现在我需要替换文件中的多个内容,然后才能正确使用数据。我已经用正则表达式替换了文本。但现在我需要更改日期。但我无法弄清楚如何做到这一点。
日期看起来像这样:"utc": "2017-10-02 19:55:00.205263000 Z"
我想为这种日期格式的所有出现获得这个结果:
"utc": "2017-10-02 19:55:00"
我尝试使用以下代码:
string pattern = @"{0:yyyy-mm-dd hh:mm:ss.fff Z}";
string replacement = "{0:yyyy-mm-dd hh:mm:ss";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(theInputTextFile, replacement);
Run Code Online (Sandbox Code Playgroud)
是否不能将日期格式与正则表达式一起使用。或者我在我的代码中犯了错误?
实际上,您可以给 Regex.Replace 方法一个委托,以便您可以转换其格式。检查此页面中的示例:https : //msdn.microsoft.com/en-us/library/cft8645c(v=vs.110).aspx
下面是一个代码示例,它查找按照您在问题中所写的格式设置的日期并替换为新格式:
class Program
{
static void Main()
{
string text = " dasd arew 2017-03-11 12:25:56.345 Z 2017-03-11 12:25:56.345 Z das tfgwe 2017-03-11 12:25:56.345 Z";
string pattern = @"\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\:\d{2}\.\d{3}\sZ";
Regex r = new Regex(pattern);
var res = r.Replace(text, new MatchEvaluator(ConvertDateFormat));
Console.WriteLine(res);
}
static string ConvertDateFormat(Match m)
{
var mydate = DateTime.Parse(m.Value);
return mydate.ToString("yyyy-MM-dd hh:mm:ss");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2365 次 |
| 最近记录: |