SHILY

Удаление элементов из строкового списка

Jan 20th, 2021 (edited)
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.98 KB | None | 0 0
  1. /*---------------------------------
  2.   Сниппеты для работы со списком
  3. *///-------------------------------
  4. var TempList = new List<string>(); // создаем наш список.
  5.  
  6. //Прежде чем что-то удалить, нужно туда что-то добавить. Можно считать из файла данные или зенно лист туда положить, а я просто массив строк вкину.
  7. TempList.AddRange(new String[]{"la-la", "la-la", "be-be", "la", "", "", "ля-ля", "бе-бе", "", "ляяя", "fff", "yyy", "sss"});
  8.  
  9. //Удалить все строки удовлетворяющие регулярному выражению.
  10. TempList.RemoveAll(x => Regex.IsMatch(x, @"la.*?"));
  11.  
  12. //Удалить все строки не удовлетворяющие регулярному выражению.
  13. TempList.RemoveAll(x => !Regex.IsMatch(x, @"la.*?"));
  14.  
  15. //Удалить все пустые строк и состоящие из пробелов или null.
  16. TempList.RemoveAll(x => String.IsNullOrWhiteSpace(x));
  17.  
  18. //Удалить все строки которые содержат заданный текст (удаление по не точному совпадению).
  19. TempList.RemoveAll(x => x.Contains("la"));
  20.  
  21. //Удалить все строки которые не содержат заданный текст (удаление по не точному совпадению).
  22. TempList.RemoveAll(x => !x.Contains("la"));
  23.  
  24. //Удалить все строки которые содержат заданный текст (удаление по точному значению).
  25. TempList.RemoveAll(x => x.Equals("la", StringComparison.Ordinal));
  26.  
  27. //Удалить все строки которые не содержат заданный текст (удаление по точному значению).
  28. TempList.RemoveAll(x => !x.Equals("la", StringComparison.Ordinal));
  29.  
  30. /*
  31.   Вывод в лог всего списка, чтоб поглядеть на результат.
  32.   Просто так, для тех, кто не шарит и хочет поглядеть разнциу.
  33.   Для понимания, можете просто закомментировать все "RemoveAll" и поочередно раскомментировать и глядеть, что будет выводить.
  34. */
  35. foreach (var s in TempList)
  36.     project.SendInfoToLog(s);
  37.  
  38. /*------------------------------------------------------------------------------
  39.   Как вариант, можете использовать такую конструкицю для обработки IZennoList
  40. *///----------------------------------------------------------------------------
  41. var MyZennoList = project.Lists["Мой зенно список"]; // наш зенно список.
  42. var TempList2 = new List<string>(); // создаем наш временный список.
  43.  
  44. //lock нужен для того, чтобы, если наш зенно список привязан к файлу, во время многопоточной работы не упало исключение (когда слишком много потоков долбят один и тот же файл одновременно).
  45. lock (SyncObjects.ListSyncer)
  46. {
  47.     TempList2.AddRange(MyZennoList); // закидываем IZennoList во временный наш список.
  48.     MyZennoList.Clear(); // очищаем наш IZennoList.
  49.     TempList2.RemoveAll(x => !x.Equals("la", StringComparison.Ordinal)); // удаляем из временного списка всю бяку (варианты расписаны выше).
  50.     MyZennoList.AddRange(TempList2);  // кладем результат в наш зенно список.
  51. }
  52.  
  53. //Так же вывод в лог все коллекции, просто так (выводит уже наш зенно список).
  54. foreach (var s in MyZennoList)
  55.     project.SendInfoToLog(s);
Add Comment
Please, Sign In to add comment