c# - 如何检查文件名是否包含整个文件名中的某些字符串值
问题描述
我有大约 37k 的文件名和 8k 的字符串数组。我想检查这些文件名中是否存在数组中的每个单独的字符串,它应该返回该文件名。我试过下面的代码。但没有得到所需的答案。
foreach (string result in DifferArray)
{
var res = result ;
var results = files.Contains(res);
if (results == true)
{
}
else
{
}
}
}
例如,如果 res 的值为 '000000000000000100108979' 并且文件名包含它,那么它应该返回文件名。
解决方案
一个快速的解决方案可能是:
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
}
推荐阅读
- java - 在while循环的条件下,有没有办法在用户没有输入有效值时显示错误消息
- angularjs - 在 Angular 1.x 中访问范围函数之外的变量
- java - 静态类模拟中的 org.powermock.api.mockito.ClassNotPreparedException
- powerbi - 过滤运行总计
- python - 检查字符串是否为回文时出现递归错误
- javascript - 在 Node 中验证 TypeForm Webhook 有效负载
- material-ui - 如何使用 Material-ui withStyles HoC 实现 ag-grid 自定义浮动过滤器?
- agda - With-抽象和相等
- python-3.x - 如何在python中将两个嵌套列表分组?
- aws-lambda - AWS Lambda 到 Azure 函数迁移