Генерация имен для URL с одним и тем же хостом .net - PullRequest
0 голосов
/ 05 марта 2012

У меня ошибка создания имен для URL, которые я автоматически импортирую в свое приложение Например, в настоящее время я генерирую URL-адреса, извлекая имя хоста, как это

www.example.com/some-dir/page.htm  becomes example.com

Но я получаю забавную ошибку, когда у меня есть URL-адреса, подобные этим

www.example.com/some-dir/page.htm
www.example.com/another-dir/page.htm
www.example.com/yet-another-dir/another-page.htm

поэтому в настоящее время я пытаюсь исправить, добавив число к имени, как это

www.example.com/some-dir/page.htm  = example.com
www.example.com/another-dir/page.htm  = example.com1
www.example.com/yet-another-dir/another-page.htm  = example.com2

но я думаю, что, возможно, был бы лучший способ, пример, я думаю, это

www.example.com/some-dir/page.htm  = example.com
www.example.com/another-dir/page.htm  = example1.com
www.example.com/yet-another-dir/another-page.htm  = example2.com

но кто-нибудь может предложить что-нибудь лучше или как я могу сделать это последнее изменение в коде?

спасибо

1 Ответ

1 голос
/ 05 марта 2012

Создать словарь для сопоставления доменного имени с целочисленным счетчиком, например ::100100 *Dictionary<string, int> m_domainNameToCounterMap

Затем ведите счетчик, извлекая имя домена и сопоставляя его со словарем:

private static void DomainNameTest()
{
    Dictionary<string, int> m_domainNameToCounterMap;

    string domainName;
    if ( !m_domainNameToCounterMap.ContainsKey( domainName ) )
    {
        m_domainNameToCounterMap.Add( domainName, 1 ); // Initial counter
    }

    int domainCounter = m_domainNameToCounterMap[ domainName ];

    // Do some smart naming convention
    Regex re = new Regex("(.*)(\.[^\.]+)$");
    Match m = re.Match(domainName);
    if ( m.Success )
    {
        domainName = string.Format( "{0}{1}{2}", m.Groups[1], domainCounter, m.Groups[2] );
    }

    // Inc. counter for next time
    m_domainNameToCounterMap[ domainName ] = m_domainNameToCounterMap[ domainName ] + 1;
}

Вы добавляете счетчик непосредственно перед последним .Что-то с небольшой помощью регулярных выражений.

(*) Примечание: я не скомпилировал код, поэтому он может не работать из коробки, но вы поймете общую идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...