我需要獲取所有不包含上載單詞的文件。這是我試過的,但沒有奏效。使用Directory.GetFiles獲取名稱中沒有特定單詞的文件
string[] fileList = Directory.GetFiles(@"F:\Reports", @"*[^upload].xls")
foreach (string file in fileList)
{
Console.WriteLine(file);
}
任何幫助將不勝感激。
我需要獲取所有不包含上載單詞的文件。這是我試過的,但沒有奏效。使用Directory.GetFiles獲取名稱中沒有特定單詞的文件
string[] fileList = Directory.GetFiles(@"F:\Reports", @"*[^upload].xls")
foreach (string file in fileList)
{
Console.WriteLine(file);
}
任何幫助將不勝感激。
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);
}
如果您只需要篩選出upload
而非的文件,則可以使用Regex
:
if (!Regex.IsMatch(file, @"(?i)\bupload\b"))
其中\b
表示字面界限,(?i)
表示不區分大小寫的匹配。
見another IDEONE demo(僅upload
文件名過濾出去,一個與保持)
[^upload]
是否定字符類,將匹配除字符類中的字符以外的任何內容。相反,您可以使用negative look ahead(?!upload)
。
檢查@Avinash Raj的完整正則表達式的答案。
謝謝您的快速重播 –
@BenJ不客氣! – Kasramvd
Directory.GetFiles
不支持正則表達式。相反,你可以使用Linq
Where
方法來篩選結果,例如:
string[] fileList = Directory.GetFiles(@"F:\Reports", @"*.xls");
foreach (string file in fileList.Where(f => !f.Contains("upload"))
{
Console.WriteLine(file);
}
謝謝你的回答。 –
謝謝你的解釋。 –
是否要排除具有「upload」作爲整個單詞的文件?或者「上傳」也是不行? –
我需要排除只有上傳爲整個單詞的文件 –