У меня есть список имен файлов с полным путем, из которого мне нужно удалить имя файла и часть пути к файлу, учитывая имеющийся у меня список фильтров.
Path.GetDirectoryName(file)
Выполняет часть работы, но мне было интересно, есть ли простой способ фильтровать пути с помощью. Net 2.0, чтобы удалить его часть.
Например:
, если у меня есть путь + имя файла
, равный C: \ мои документы \ моя папка \ другая моя папка \ имя файла. exe
, и все, что мне нужно, это то, что указано выше моя папка \
означает, что мне нужно извлечь только мою другую папку
из нее.
ОБНОВЛЕНИЕ:
Список фильтров представляет собой текстовое поле с именами папок, разделенными ,
, поэтому у меня есть только частичные имена на нем, как в приведенном выше примере, фильтр здесь будет моя папка
Текущее решение на основе кода Роба:
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;
}
}