jav*_*ene 0 c# regex directory
我在Stack Overflow上找到了关于Directory.GetFiles()的几个问题,但在所有情况下,他们都解释了如何使用它来通过多个条件查找特定扩展或一组文件.但在我的情况下,我想要的是使用正则表达式获取Directory.GetFiles()的搜索模式,该表达式返回目录的所有文件,但是我指定的集合.我的意思是不要声明我想要的那套但是差别.例如,如果我想要目录的所有文件而不是htmls.请注意,我知道它可以通过这种方式实现:
var filteredFiles = Directory
.GetFiles(path, "*.*")
.Where(file => !file.ToLower().EndsWith("html")))
.ToList();
Run Code Online (Sandbox Code Playgroud)
但这不是一个非常可重用的解决方案,如果以后我想过滤另一种文件,我必须更改代码添加|| 到何处.我正在寻找允许我创建正则表达式的东西,它包含我不想获取的文件并将其传递给Directory.GetFiles().因此,如果我想稍后过滤更多扩展,只需更改正则表达式.
如果要过滤扩展,则不需要正则表达式:
// for example a field or property in your class
private HashSet<string> ExtensionBlacklist { get; } =
new HashSet<string>(StringComparer.InvariantCultureIgnoreCase)
{
".html",
".htm"
};
// ...
var filteredFiles = Directory.EnumerateFiles(path, "*.*")
.Where(fn => !ExtensionBlacklist.Contains(System.IO.Path.GetExtension(fn)))
.ToList();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
566 次 |
最近记录: |