2015-07-13 29 views

回答

1

GetFiles documentation

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 demo

如果您只需要篩選出upload而非​​的文件,則可以使用Regex

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

其中\b表示字面界限,(?i)表示不區分大小寫的匹配。

another IDEONE demo(僅upload文件名過濾出去,一個與​​保持)

+0

謝謝你的解釋。 –

+0

是否要排除具有「upload」作爲整個單詞的文件?或者「上傳」也是不行? –

+1

我需要排除只有上傳爲整個單詞的文件 –

0

[^upload]是否定字符類,將匹配除字符類中的字符以外的任何內容。相反,您可以使用negative look ahead(?!upload)

檢查@Avinash Raj的完整正則表達式的答案。

+0

謝謝您的快速重播 –

+0

@BenJ不客氣! – Kasramvd

1

Directory.GetFiles不支持正則表達式。相反,你可以使用LinqWhere方法來篩選結果,例如:

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

謝謝你的回答。 –

相關問題