Как удалить похожие ссылки из списка?

clocky

Client
Регистрация
26.09.2019
Сообщения
332
Благодарностей
44
Баллы
28
Всех приветствую, имеется файл с ссылками, нужно удалить все ссылки, которые похожи до предпоследнего слеша, пример:

http://site.ru/aaa/bbb/123 - удалить
http://site.ru/aaa/bbb/345 - удалить
http://site.ru/aaa/bbb/567 - оставить
- оставить
- оставить
-оставить

Надеюсь смог объяснить, спасибо заранее!
 

discus

Client
Регистрация
21.09.2020
Сообщения
87
Благодарностей
43
Баллы
18
Сортируешь список по возрастанию в Notepad++ или Excel.
В шаблоне:
1. Сохраняешь первую строку в новый файл.
2. Задаешь счетчик со второй строки.
3. Берешь вторую строку и регуляркой забираешь значение между последними слешами.
4. Берешь предыдущую строку и регуляркой забираешь значение между последними слешами.
5. Сравниваешь значения, если одинаковы - увеличиваешь счетчик, если разные - дописываешь текущую строку в новый файл и увеличиваешь счетчик.
 

alex8020

Client
Регистрация
16.08.2016
Сообщения
37
Благодарностей
39
Баллы
18
C#:
var list_good = new List<string>();
var list_temp = new List<string>();
var list = File.ReadAllLines(project.Directory + @"\list.txt").ToList(); // взять список из list.txt
for(int i = 0; i < list.Count; i++)
{
    string s = list[i]; // взять поочередно каждую строку
    string temp = Regex.Match(s, @".*/").Value; // обрезать строку до последнего слеша
    //string temp = "http://site.ru/" + s.Split('/')[3] + "/" + s.Split('/')[4]; // если до предпоследнего, то разбиваем строку по слешам и собираем заново до нужного слеша
    if(list_temp.Contains(temp)) continue; // если во временном списке есть обрезанная строка, то берем следующую...
    list_good.Add(s); // ... если нет, то добавляем основную строку в список с good'ами
    list_temp.Add(temp); // и добавляем обрезанную строку во временный список
}
File.WriteAllLines(project.Directory + @"\list.txt", list_good); // перезаписываем файл list.txt"
 
  • Спасибо
Реакции: clocky

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