Найти определенную подстроку


Я пишу маленький загрузчик, который будет полистать каталоги онлайн и скачать контент. Первый прототип моей программы-это успех, теперь я просто хочу уточнить ее и узнать некоторые более C#. Задача стоит такая:

Взять эту строку:

http://example.free.pl/plus%20violent/Dark%20The%20Suns/All%20Ends%20In%20Silence/

и создать подстроку между двумя последними /

Результат: все%20Ends%20 в%20Silence

Я считаю, моей нынешней скотской код и, вероятно, не очень чистый, в C# способ решения проблемы:

    string GetDirectoryName(string directory)
    {
        int lastIndex  = directory.LastIndexOf("/");
        int count = directory.Count<char>(elem => elem == '/') - 1;

        int startIndex = 0;
        while (count > 0)
        {
            startIndex = directory.IndexOf("/", startIndex) + 1;
            --count;
        }

        return directory.Substring(startIndex, lastIndex - startIndex).Replace("%20", " ");
    }

Пожалуйста, посоветуйте мне как я могу сделать код чище, понятнее и следуя методология# программирования.



1940
4
c#
задан 20 сентября 2011 в 01:09 Источник Поделиться
Комментарии
2 ответа

Интернет .Чистая рамки сделают это для вас довольно чистоплотны с правом занятия.

Например:

string url = "http://example.free.pl/plus%20violent/Dark%20The%20Suns/All%20Ends%20In%20Silence/";

DirectoryInfo di = new DirectoryInfo( new Uri(url).LocalPath );

На ди.Имя свойства содержит "все концы в тишине".

10
ответ дан 20 сентября 2011 в 03:09 Источник Поделиться

Вы могли бы заменить цикл с вызовом LastIndexOf:

const char separator = '/';
int lastSlash = directory.LastIndexOf(separator);
int slashBeforeLast = directory.LastIndexOf(separator, lastSlash - 1);
return directory.Substring(slashBeforeLast + 1, lastSlash - slashBeforeLast - 1);

2
ответ дан 21 сентября 2011 в 01:09 Источник Поделиться