将逗号分隔的字符串转换为GetFiles SearchPattern

时间:2013-09-10 15:28:02

标签: c# string join split getfiles

我有以下代码:

private string[] FindExistingDocuments()
{
    string supportedImageFormats = "jpg,pdf,doc,docx,xlsx";

    DirectoryInfo documentPath = new DirectoryInfo("...");

    string supportedFileTypes = String.Join(",*.", supportedImageFormats.Split(','));
    string[] files = Directory.GetFiles(documentPath.FullName, supportedFileTypes, SearchOption.AllDirectories);

    return files;
}

这是一种搜索特定文件类型列表的方法,但当前代码的问题是String.Join没有将分隔符放在第一项(这是有意义的)。

所以我的supportedFileTypes原来是:

jpg,*.pdf,*.doc,*.docx,*.xlsx

但我希望它是:

*.jpg,*.pdf,*.doc,*.docx,*.xlsx

我可以以一种非常干净的方式做到这一点吗?

注意:我无法更改supportedImageFormats

的内容

2 个答案:

答案 0 :(得分:6)

string newStr = string.Join(",", supportedImageFormats.Split(',')
                                     .Select(r => "*." + r));

输出:Console.WriteLine(newStr);

*.jpg,*.pdf,*.doc,*.docx,*.xlsx

答案 1 :(得分:1)

我认识到来自@Habib的答案的优雅,但也有一个非LINQ答案

 string newStr = "*." + string.Join(",*.", supportedImageFormats.Split(','));

顺便说一下,所有这一切都毫无意义,因为你无法将这种模式传递给Directory.GetFiles