Given full path, check if path is subdirectory of some other path, or otherwise

前端 未结 9 1345
难免孤独
难免孤独 2020-12-03 13:22

I have 2 strings - dir1 and dir2, and I need to check if one is sub-directory for other. I tried to go with Contains method:

dir1.contains(dir2);
         


        
9条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-03 14:02

    My paths could possibly contain different casing and even have untrimmed segments... This seems to work:

    public static bool IsParent(string fullPath, string base)
    {
    	var fullPathSegments = SegmentizePath(fullPath);
    	var baseSegments = SegmentizePath(base);
    	var index = 0;
    	while (fullPathSegments.Count>index && baseSegments.Count>index && 
    		fullPathSegments[index].Trim().ToLower() == baseSegments[index].Trim().ToLower())
    		index++;
    	return index==baseSegments.Count-1;
    }
    
    public static IList SegmentizePath(string path)
    {
    	var segments = new List();
    	var remaining = new DirectoryInfo(path);
    	while (null != remaining)
    	{
    		segments.Add(remaining.Name);
    		remaining = remaining.Parent;
    	}
    	segments.Reverse();
    	return segments;
    }

提交回复
热议问题