繁体   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