将 Directory.GetFiles() 与正则表达式一起使用时出错

本文关键字:一起 出错 正则表达式 Directory GetFiles | 更新日期: 2023-09-27 18:35:27

我正在为我自制的Windows资源管理器开发搜索功能。我用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() 与正则表达式一起使用时出错

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 +"*";