У меня есть список имен файлов с полным путем, который мне нужен, чтобы удалить имя файла и часть пути к файлу, учитывая список фильтров, который у меня есть.
Path.GetDirectoryName(file)
Выполняет часть работы, но мне было интересноесли есть простой способ отфильтровать пути, используя .Net 2.0, чтобы удалить его часть.
Например:
если у меня path + filename
равно C:\my documents\my folder\my other folder\filename.exe
и все япотребность - это то, что выше my folder\
означает, что мне нужно извлечь из нее только my other folder
.
ОБНОВЛЕНИЕ:
Список фильтров представляет собой текстовое поле с именами папокразделенный ,
, поэтому у меня есть только частичные имена, как в приведенном выше примере, фильтр здесь будет my folder
Текущее решение на основе кода Роба:
string relativeFolder = null;
string file = @"C:\foo\bar\magic\bar.txt";
string folder = Path.GetDirectoryName(file);
string[] paths = folder.Split(Path.DirectorySeparatorChar);
string[] filterArray = iFilter.Text.Split(',');
foreach (string filter in filterArray)
{
int startAfter = Array.IndexOf(paths, filter) + 1;
if (startAfter > 0)
{
relativeFolder = string.Join(Path.DirectorySeparatorChar.ToString(), paths, startAfter, paths.Length - startAfter);
break;
}
}