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);
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;
}