首页 > 解决方案 > 如何检查文件名是否包含整个文件名中的某些字符串值

问题描述

我有大约 37k 的文件名和 8k 的字符串数组。我想检查这些文件名中是否存在数组中的每个单独的字符串,它应该返回该文件名。我试过下面的代码。但没有得到所需的答案。

  foreach (string result in DifferArray)
                {
                 var res =   result ;
                 var results = files.Contains(res);

                 if (results == true)
                 {

                 }
                 else
                 { 

                 }
                }
              }

我附上了下面的文件名图片 在此处输入图像描述

例如,如果 res 的值为 '000000000000000100108979' 并且文件名包含它,那么它应该返回文件名。

标签: c#.netconsole-application

解决方案


一个快速的解决方案可能是:

var results = files.Any(r => r.IndexOf(res) >= 0);

那是因为Contains搜索匹配的字符串,而不仅仅是它的一部分。
可以优化算法并尝试其他方法,但这只是一个简单的修复。


操作请求后编辑
要获取文件名,您可以使用:

var filename = files.FirstOrDefault(r => r.IndexOf(res) >= 0);
if (string.IsNullOrEmpty(filename)) {
  // NOT FOUND
} else {
  // Filename contains your full filename
}

推荐阅读