簡體   English   中英

使用Directory.GetFiles獲取名稱中沒有特定單詞的文件

[英]Get files with no specific word in the name using Directory.GetFiles

我需要獲取所有不包含上載單詞的文件。 這是我嘗試過的方法,但是沒有用。

string[] fileList = Directory.GetFiles(@"F:\Reports", @"*[^upload].xls")
foreach (string file in fileList)
{
    Console.WriteLine(file);
}

任何幫助將不勝感激。

Directory.GetFiles不支持正則表達式。 相反,您可以使用Linq Where方法來過濾結果,例如:

string[] fileList = Directory.GetFiles(@"F:\Reports", @"*.xls");
foreach (string file in fileList.Where(f => !f.Contains("upload"))
{
    Console.WriteLine(file);
}

請參閱GetFiles文檔

searchPattern
Type: System.String
與路徑中文件名匹配的搜索字符串 此參數可以包含有效的文字路徑和通配符( *? )字符的組合(請參閱備注),但不支持正則表達式

這是我的建議,可以獲取所有Excel文件,而不僅僅是那些舊的Excel * .xls文件,然后我使用Contains過濾掉不需要的條目:

var fileList = Directory.GetFiles(@"F:\Reports", @"*.xls*")
foreach (var file in fileList)
{
    if (!file.ToLower().Contains("upload".ToLower()))
        Console.WriteLine(file);
}

IDEONE演示

如果您只需要過濾upload和不uploading的文件,則可以使用Regex

if (!Regex.IsMatch(file, @"(?i)\bupload\b"))

其中\\b代表單詞邊界, (?i)代表不區分大小寫的匹配。

另一IDEONE演示 (僅適用於文件名upload濾出,在一個與uploading保留)

[^upload]是一個否定的字符類,它將匹配字符類中的字符以外的任何字符。 相反,您可以使用否定的前瞻 (?!upload)

查看@Avinash Raj的答案以獲取完整的正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM