Directory.EnumerateFiles 具有 "special" 个过滤器
Directory.EnumerateFiles with "special" filters
我需要过滤目录中的一些文件。我必须过滤具有不同扩展名的不同类型的文件,但一个是 "??b" 。例子
29389.99b 或 382802.03b。对于其他文件,它工作正常,但我该如何过滤呢?
我正在使用
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".??b") || s.EndsWith(".in") || s.EndsWith(".txt"));
谢谢
您可以使用正则表达式解决它。下面的代码可以帮到你。
var files = Directory.EnumerateDirectories(path).Where(s => Regex.IsMatch(s, @"(.*)\.+.{2}b$"));
检查分机长度和最后一个字母。
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
.Where(s =>
{
string ext = Path.GetExtension(s);
return ext.Length == 4 && ext.EndsWith("b")
|| s.EndsWith(".in")
|| s.EndsWith(".txt");
});
我需要过滤目录中的一些文件。我必须过滤具有不同扩展名的不同类型的文件,但一个是 "??b" 。例子 29389.99b 或 382802.03b。对于其他文件,它工作正常,但我该如何过滤呢? 我正在使用
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".??b") || s.EndsWith(".in") || s.EndsWith(".txt"));
谢谢
您可以使用正则表达式解决它。下面的代码可以帮到你。
var files = Directory.EnumerateDirectories(path).Where(s => Regex.IsMatch(s, @"(.*)\.+.{2}b$"));
检查分机长度和最后一个字母。
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
.Where(s =>
{
string ext = Path.GetExtension(s);
return ext.Length == 4 && ext.EndsWith("b")
|| s.EndsWith(".in")
|| s.EndsWith(".txt");
});