我有一个包含许多项目的字符串列表,其中一些以下列格式的日期/时间开头:
2016-05-04 18:46:05.115 Copyright (c) 2014 Microsoft Corporation
我希望循环并从列表中包含该格式的所有项目中删除该日期/时间。
目前我有这个:
var regexDateTime = "/^(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})$/";
preperationMessages = preperationMessages
.Select(x => Regex.Replace(x, regexDateTime, ""))
.ToList();
根本没有过滤任何日期。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
使用此正则表达式:
var regex = @"^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\.(\d{3})";
正则表达式的问题在于' $'最后,它意味着字符串结束,而不是你想要的。另外一点是,你不要在csharp的正则表达式的开头和结尾使用斜杠,就像你在javascript中一样。
答案 1 :(得分:0)
如果您不想使用RegEx,这也有效(根据您的邮件集合的大小,这可能会更快:
int dateChars = 23;
DateTime output;
// Remove leading date(s)
preparationMessages = preparationMessages
.Select(x => x.Length > dateChars && DateTime.TryParse(x.Substring(0, dateChars), out output) ? x.Substring(dateChars+1) : x)
.ToList();