Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何应用检查只选择简单字符串而忽略包含日期的字符串? List mylist=new List() { “要素1”、“2019年2月18日”、“要素3”、“2018年3月17日” };_C# - Fatal编程技术网

C# 如何应用检查只选择简单字符串而忽略包含日期的字符串? List mylist=new List() { “要素1”、“2019年2月18日”、“要素3”、“2018年3月17日” };

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

在上面的列表中,我只想筛选元素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(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();