список - чистка по условию

auva

Client
Регистрация
09.02.2016
Сообщения
34
Благодарностей
4
Баллы
8
Привет, форумчане!

Появилась задача сделать чистилку url.

Список ~ 10 000 url , может быть:
1. site.ru
2. test.site.ru
3. new.test.site.ru
4. one.new.test.site.ru
5. best.one.new.test.site.ru

Как в списке оставить только сайты № 1, удалив весь мусор №2-5?
Буду признателен за примеры, т.к. я новичок ;-)

Спасибо
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
Привет, форумчане!

Появилась задача сделать чистилку url.

Список ~ 10 000 url , может быть:
1. site.ru
2. test.site.ru
3. new.test.site.ru
4. one.new.test.site.ru
5. best.one.new.test.site.ru

Как в списке оставить только сайты № 1, удалив весь мусор №2-5?
Буду признателен за примеры, т.к. я новичок ;-)

Спасибо
Можно как-то так, хотя имхо не оптимально:
C#:
string[] sites = { "test.site.ru",  "site.ru", "new.test.site.ru", "one.new.test.site.ru", "best.one.new.test.site.ru", "site2.ru", "www.site2.ru" };
string[] tmpSorted =  sites.Select(el => el.Split('.')).OrderBy(el => el.Length).Select(el => String.Join(".",el)).ToArray();
List<string> cleaned = new List<string>(); // Тут будет результат

while (true)
{
    if (tmpSorted.Length == 0) break;
    var identical = tmpSorted.Where(el => el.EndsWith(tmpSorted.First())).ToArray();
    if (identical.Length > 0)
        cleaned.Add(tmpSorted.First());
    tmpSorted = tmpSorted.Where(el => !identical.Any(el.Contains)).ToArray();
}
 

auva

Client
Регистрация
09.02.2016
Сообщения
34
Благодарностей
4
Баллы
8
Можно как-то так, хотя имхо не оптимально:
C#:
string[] sites = { "test.site.ru",  "site.ru", "new.test.site.ru", "one.new.test.site.ru", "best.one.new.test.site.ru", "site2.ru", "www.site2.ru" };
string[] tmpSorted =  sites.Select(el => el.Split('.')).OrderBy(el => el.Length).Select(el => String.Join(".",el)).ToArray();
List<string> cleaned = new List<string>(); // Тут будет результат

while (true)
{
    if (tmpSorted.Length == 0) break;
    var identical = tmpSorted.Where(el => el.EndsWith(tmpSorted.First())).ToArray();
    if (identical.Length > 0)
        cleaned.Add(tmpSorted.First());
    tmpSorted = tmpSorted.Where(el => !identical.Any(el.Contains)).ToArray();
}
это все в C#?
надо чтоб было что-то в этом духе.

*.*.*.*.*
*.*.*.*
*.*.*
*.* - оставить только такой вариант

т.е. может быть:

1. yandex.ru
2. ewer.tiu.ru
3. blabla.tint.com.ua
4. my.blogs.ro.com.ua
5. best.site.my.usa.ro.co

мне надо удалить все url, а оставить только №1
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
это все в C#?
надо чтоб было что-то в этом духе.

*.*.*.*.*
*.*.*.*
*.*.*
*.* - оставить только такой вариант

т.е. может быть:

1. yandex.ru
2. ewer.tiu.ru
3. blabla.tint.com.ua
4. my.blogs.ro.com.ua
5. best.site.my.usa.ro.co

мне надо удалить все url, а оставить только №1
А если сайт google.co.uk, оставлять только co.uk ? ))
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93

Вложения

auva

Client
Регистрация
09.02.2016
Сообщения
34
Благодарностей
4
Баллы
8

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
нет, просто удалять всю строку если не удовлетворяют условиям
Тогда вообще в одну строчку все делается:
C#:
project.Lists["CleanedList"].Clear();
var cleaned = project.Lists["RawList"].Where(el => Regex.Matches(el,@"\.").Count == 1);
project.Lists["CleanedList"].AddRange(cleaned);
project.SendInfoToLog(String.Join(", ",cleaned));
та я имею ввиду на форуме)) в посте у вас код вставляется с синтаксисом си шарп
После CODE пишем =charp и будет подсветка.
 
  • Спасибо
Реакции: arhip1985

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
1й уровень
^([\w-]+\.){1}\w+$
2й уровень
^([\w-]+\.){2}\w+$
3й и 4й
^([\w-]+\.){3,4}\w+$
о 1го до 3го
^([\w-]+\.){1,3}\w+$
2й+
^([\w-]+\.){2,}\w+$
 

auva

Client
Регистрация
09.02.2016
Сообщения
34
Благодарностей
4
Баллы
8

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)