0

假设我有一个像“ .vcproj; .csproj;*.sln”这样的字符串,并且我想在一个目录中显示这些类型的所有文件...... Windows 一直通过打开文件对话框来执行此操作。

我知道,Directory.GetFiles但它只允许我运行给定的搜索模式,所以我必须拆分我的输入,然后循环遍历每个。

在所有打开文件对话框之后,是否没有内置功能可以做到这一点?

.NET 2 所以没有 LINQ 的聪明才智是可用的!

4

2 回答 2

5

试试这个方法:

string[] formats = {".jpg", ".png", ".txt"};
var files = Directory.GetFiles("C:\\");
var neededFiles = files.
    Where(file => formats.Any(file.EndsWith)).
    ToArray();

或者,对于 .NET 2.0:

var desiredFiles = new List<string>(files.Length);
foreach (var file in files)
{
    foreach (var format in formats)
        if (file.EndsWith(format))
        {
            desiredFiles.Add(file);
            break;
        }
}
于 2013-01-11T15:11:14.423 回答
0

您可以使用垂直管道'|' 对于RegEx 交替。我认为您的最终代码应类似于:

string input_files = ".vcproj;.csproj;*.sln";
string search_for = input_files.Replace(".","\.").Replace(";","|")

Directory.GetFiles("/path/to/directory",search_for)

我从未在 .NET 中进行过任何编码,因此如果我的语法错误,我深表歉意。显然,如果您的初始搜索词字符串以有效的正则表达式形式开始,您可以节省一些时间。

于 2013-01-11T15:27:33.687 回答