C# 如何应用检查只选择简单字符串而忽略包含日期的字符串? List mylist=new List() { “要素1”、“2019年2月18日”、“要素3”、“2018年3月17日” };
在上面的列表中,我只想筛选元素1和元素3,而不想筛选包含日期的字符串。我不知道该怎么做。C# 如何应用检查只选择简单字符串而忽略包含日期的字符串? List mylist=new List() { “要素1”、“2019年2月18日”、“要素3”、“2018年3月17日” };,c#,C#,在上面的列表中,我只想筛选元素1和元素3,而不想筛选包含日期的字符串。我不知道该怎么做。List mylist=new List() List<string> mylist = new List<string>() { "element1", "02/18/2019", "element3", "03/17/2018" }; { “要素1”、“2019年2月18日”、“要素3”、“2018年3月17日” }.Where(c=>!DateTime.TryParse
List mylist=new List()
List<string> mylist = new List<string>()
{
"element1", "02/18/2019", "element3", "03/17/2018"
};
{
“要素1”、“2019年2月18日”、“要素3”、“2018年3月17日”
}.Where(c=>!DateTime.TryParse(c,out DateTime d)).ToList();
编辑:由于格式始终为MM/dd/yyyy,因此无论线程的区域设置如何,这都应该有效:
List<string> mylist = new List<string>()
{
"element1", "02/18/2019", "element3", "03/17/2018"
}.Where(c => !DateTime.TryParse(c, out DateTime d)).ToList();
List mylist=new List()
{
“要素1”、“2019年2月18日”、“要素3”、“2018年3月17日”
}.其中(c=>
!DateTime.TryParseExact(c,“MM/dd/yyyy”,CultureInfo.InvariantCulture,
DateTimeStyles.None,过期时间d)
).ToList();
您可以在循环中使用DateTime.TryParse
List mylist=新列表(新字符串[]{“element1”、“02/18/2019”、“element3”、“03/17/2018”});
var filteredlist=mylist.Where(=>!DateTime.TryParseExact(,“MM/dd/yyyy”,CultureInfo.InvariantCulture,out DateTime res)).ToList();
如果您可以100%确定日期格式,那么最好使用
TryParseExact
flavor:可能是一个很好的起点。当您想“忽略包含日期的字符串”和“只过滤元素1和元素2而不过滤包含日期的字符串”时,这听起来很矛盾。此外,字符串不包含日期。它们只是一个字符列表。您可以将字符串解析为日期。您的字符串似乎可以以MM/dd/yyyy
的形式解析为日期。这就是你想要的吗?这能回答你的问题吗?正则表达式方式:var strList=mylist.Where(x=>Regex.IsMatch(x,@“^.*?[A-Za-z]\d+$”)代码>运行Console.WriteLine(string.Join(“,”,mylist))代码>在您的代码结果之后:“元素1,02/18/2019,元素3,03/17/2018”
。看,我的假设是,这是因为没有第17个月或第18个月。@John你所在的地区是什么?英语(英国)
List<string> mylist = new List<string>()
{
"element1", "02/18/2019", "element3", "03/17/2018"
}.Where(c =>
!DateTime.TryParseExact(c, "MM/dd/yyyy", CultureInfo.InvariantCulture,
DateTimeStyles.None, out DateTime d)
).ToList();
List<string> mylist = new List<string>(new string[] { "element1", "02/18/2019", "element3","03/17/2018" });
var filteredLst = mylist.Where(_ => !DateTime.TryParseExact(_, "MM/dd/yyyy" ,CultureInfo.InvariantCulture, out DateTime res)).ToList();