检查文件路径是否属于文件夹名称

3
我想要检查文件夹名称是否包含文件路径。 例如:
string filePath = @"C:/vietnam/hello/world/welcome.jpg"
IsFileBelongToFolderName(filePath, "hello");//should return true
IsFileBelongToFolderName(filePath, "hell");//should return false

在简单的情况下,我只是检查文件路径是否包含“/FolderName/”,但不确定对于任何情况是否正确。是否有内置函数可用于此检查?
更新:在实际示例中,我们正在创建应用程序以同步文件夹。某些子文件夹包含元文件,因此我们不希望将其同步。我们想要传递一系列子文件夹而不是简单的文件夹名称,例如:folderName = "hello/world"。我认为这比较简单,但与.gitignore文件具有相同的含义。目前为止:
string filePath = @"C:/vietnam/hello/world/welcome.jpg"
IsFileBelongToFolderName(filePath, "hello/world");//should return true
IsFileBelongToFolderName(filePath, "hell/world");//should return false
IsFileBelongToFolderName(filePath, "hell");//should return false
4个回答

5

您可以通过使用DirectorySeparatorChar来拆分filepath

var directoryPath = Path.GetDirectoryName(filepath);

filePath = Path.GetFullPath(directorypath); // Get Canonical  directory path (Credit to @Aron for pointing this.) 
bool exist = filePath.Split(Path.DirectorySeparatorChar)
                     .Any(x=>x.Equal("hello", StringComparison.InvariantCultureIgnoreCase));

1
你应该首先对路径进行规范化处理。例如,c:\foo\bar\baz.txt 属于 c:\foo\bar\qux\..\ - Aron
你应该先排除文件名,如果folderName =“welcome.jpg”,它将无法工作。 - phuongnd

2
public bool IsFileBelongToFolderName(string filePath, string folderName)
{
    return filePath.Split('/').Contains(folderName);;
}

或者

public bool IsFileBelongToFolderName(string filePath, string folderName)
{
     return filePath.Split(Path.DirectorySeparatorChar).Any(x=>x.Equal(folderName, StringComparison.InvariantCultureIgnoreCase));
}

1
尝试这个。
public bool IsFileBelongToFolderName(string filePath, string name){
    return filePath.ToLower().Contains(@"/"+name.ToLower().Replace(@"/", "")+@"/");
}


string filePath = @"C:/vietnam/hello/world/welcome.jpg";

IsFileBelongToFolderName(filePath,"vietnam"); // return True
IsFileBelongToFolderName(filePath,"Vietnam"); // return True
IsFileBelongToFolderName(filePath,"Vietna"); // return false
IsFileBelongToFolderName(filePath,"welcome.jpg"); // return false

1
string filePath = @"C:/vietnam/hello/world/welcome.jpg";
            string[] folderNames = filePath.Split('/');
            if(folderNames.Contains("hello"))
            {
                   //folder found
            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接