簡體   English   中英

將Directory.GetFiles()與正則表達式一起使用時出錯

[英]Error when using Directory.GetFiles() with regex

我正在為自己的Windows Explorer開發搜索功能。 我使用Directory.GetFiles(string path, string searchPattern, searchOption searchOption)來做到這一點。 我的問題是當我打電話時:

string searchPattern = '"' + searchBox.Text + '"'; // searchPattern = "duck"
string path = @"D:\test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);

它引發異常:

“路徑中包含非法字符。”

這是文件結構:

D:\
---test\ (Folder)
-------duck.txt (File)

Directory.GetFiles不支持正則表達式。 但是,它確實支持少數特殊的“通配符”字符。 從MSDN:

*零個或多個字符。
? 恰好為零或一個字符。

嘗試以下方法:

string searchPattern = '*' + searchBox.Text + '*'; // searchPattern = *duck*
string path = @"D:\test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);

您會收到“路徑中的非法字符。”。 因為您在搜索模式中輸入了"字符

嘗試

string searchPattern ="duck.txt"; 

您會找到想要的文件

如果您只需要提供文件名作為搜索模式,則

string searchPattern =searchBox.Text +".txt"; 

如果您需要獲取包含搜索文本的文件,則可以使用

string searchPattern ="*" +searchBox.Text +"*"; 

暫無
暫無

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

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