检查文件是否属于其中一个文件夹

时间:2016-03-07 00:41:01

标签: .net regex c#-4.0

我有像

这样的目录
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或者有更好的方法来实现它。

由于

1 个答案:

答案 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));

^表示字符串开头的匹配。