Сайт для программистов

понедельник, 13 октября 2008 г.

Укоротить длинный путь к файлу

В своей книге C#. Советы программистам я приводил пример с использованием функции Windows API PathCompactPathEx. Но сегодня в своих архивах нашел еще один пример, который забыл добавить в книгу. Этот пример использует регулярные выражения и использует следующий алгоритм: оставляет первые две папки, последнюю папку и имя файла, а среднюю часть путь заменяется многоточием (...). Делается это следующим образом:

static string PathShortener(string path)
{
const string pattern = @"^(\w+:\\)(\\[^\\]+\\[^\\]+\\).*(\\[^\\]+\\[^\\]+)$";
const string replacement = "$1$2...$3";
if (Regex.IsMatch(path, pattern))
{
return Regex.Replace(path, pattern, replacement);
}
else
{
return path;
}
}

Теперь, вы можете вызвать данный метод для укорачивания длинного пути.

string myPath = @"C:\Documents and Settings\jatwood\My Documents\Visual Studio 2005
\SimpleEncryption\UnitTests\UnitTests.vb\wumpus\public\Hilo Deliverables\Hilo
Final\Introduction\Code\Intro\App_Themes\cellphone\photo-small.jpg";

MessageBox.Show(PathShortener(myPath));

У вас выведется путь: C:\Documents and Settings\jatwood\...\cellphone\photo-small.jpg
(Источник: Coding Horror).

Системная фукнция работает по другому алгоритму, поэтому вы можете выбрать удобный для вас способ.

Комментариев нет: