我有像
这样的目录c:\test\data\product\delete\
c:\test\data\order\delete\
c:\test\data\quote\delete\
c:\temp\data\abc\delete\
c:\temp\data\pqr\delete\
c:\temp\data\xyz\delete\
依旧......
所有delete
个文件夹都包含一些文件。
问题是当我有一个文件时,例如:
c:\test\data\order\delete\order1.txt
我想检查它是否属于上述任何目录。
是否可以使用Regex
或者有更好的方法来实现它。
由于
答案 0 :(得分:0)
Regex
不是必需的。你可以这样做:
List<string> foldersList = new List<string>
{
@"c:\test\data\product\delete\",
@"c:\test\data\order\delete\",
@"c:\test\data\quote\delete\",
@"c:\temp\data\abc\delete\",
@"c:\temp\data\pqr\delete\",
@"c:\temp\data\xyz\delete\"
};
string file = @"c:\test\data\order\delete\order1.txt";
bool isChild = foldersList.Any(f => file.StartsWith(f));
以上代码是区分大小写的搜索。要搜索不区分大小写的内容,您可以执行以下操作:
bool isChild = foldersList.Any(
f => file.IndexOf(f, StringComparison.OrdinalIgnoreCase) == 0);
如果它必须是Regex
,你可以这样做:
bool isChild = foldersList.Any(
f => Regex.IsMatch(file, "^" + Regex.Escape(f), RegexOptions.IgnoreCase));
^
表示字符串开头的匹配。