SHILY

Удаление элементов из IZennoList

Jan 20th, 2021 (edited)
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.13 KB | None | 0 0
  1. /*-----------------------------------------------------------
  2.   Работа с IZennoList (как я обычно с ними взаимодействую)
  3. *///---------------------------------------------------------
  4. var MyZennoList = project.Lists["Мой зенно список"];
  5.  
  6. //Удалить все строки удовлетворяющие регулярному выражению.
  7. for (int i = 0; i <  MyZennoList.Count;)
  8.     if (Regex.IsMatch(MyZennoList[i], @"наша регулярка")) MyZennoList.RemoveAt(i); else i++;
  9.  
  10. //Удалить все строки не удовлетворяющие регулярному выражению.
  11. for (int i = 0; i <  MyZennoList.Count;)
  12.     if (!Regex.IsMatch(MyZennoList[i], @"наша регулярка")) MyZennoList.RemoveAt(i); else i++;
  13.  
  14. //Удалить все пустые строк и состоящие из пробелов или null.
  15. for (int i = 0; i <  MyZennoList.Count;)
  16.     if (String.IsNullOrWhiteSpace(MyZennoList[i])) MyZennoList.RemoveAt(i); else i++;
  17.  
  18. //Удалить все строки которые содержат заданный текст (удаление по не точному совпадению).
  19. for (int i = 0; i <  MyZennoList.Count;)
  20.     if (MyZennoList[i].Contains("заданный текст")) MyZennoList.RemoveAt(i); else i++;
  21.  
  22. //Удалить все строки которые не содержат заданный текст (удаление по не точному совпадению).
  23. for (int i = 0; i <  MyZennoList.Count;)
  24.     if (!MyZennoList[i].Contains("заданный текст")) MyZennoList.RemoveAt(i); else i++;
  25.  
  26. //Удалить все строки которые содержат заданный текст (удаление по точному значению).
  27. for (int i = 0; i <  MyZennoList.Count;)
  28.     if (MyZennoList[i].Equals("заданный текст", StringComparison.Ordinal)) MyZennoList.RemoveAt(i); else i++;
  29.  
  30. //Удалить все строки которые не содержат заданный текст (удаление по точному значению).
  31. for (int i = 0; i <  MyZennoList.Count;)
  32.     if (!MyZennoList[i].Equals("заданный текст", StringComparison.Ordinal)) MyZennoList.RemoveAt(i); else i++;
  33.  
  34. //P.S. Всё, что выше из примеров приведено - мой дурной тон, мне так больше нравится (на работу никак не влияет).
  35.  
  36. /*-------------------------------------------------------------------------------------*/
  37. //Пример более правильной записи циклов:
  38. for (int i = 0; i <  MyZennoList.Count;)
  39. {
  40.     if (!MyZennoList[i].Contains("заданный текст"))
  41.     {
  42.         MyZennoList.RemoveAt(i);
  43.     }
  44.     else
  45.     {
  46.         i++;
  47.     }
  48. }
  49.  
  50. //Так тоже будет правильно:
  51. for (int i = 0; i <  MyZennoList.Count;)
  52. {
  53.     if (!MyZennoList[i].Contains("заданный текст"))
  54.         MyZennoList.RemoveAt(i);
  55.     else
  56.         i++;
  57. }
  58.  
  59. /*-------------------------------------------------------------------------------------*/
  60. //Можно конечно и так, но я просто не люблю, когда итератор инициализируется вне цикла.
  61. //Пример:
  62. int j = 0;
  63. while (true)
  64. {
  65.     if (j == MyZennoList.Count || MyZennoList.Count == 0) break;
  66.     if (MyZennoList[j].Equals("заданный текст", StringComparison.Ordinal))
  67.     {
  68.         MyZennoList.RemoveAt(j);
  69.     }
  70.     else
  71.     {
  72.         j++;
  73.     }
  74. }
  75.  
  76. /*-------------------------------------------------------------------------------------*/
  77. //Рекомендую на многопотоке обернуть циклы локом, чтоб снизить вероятность словить исключение (если конечно список привязан к файлу).
  78. //Пример:
  79. lock (SyncObjects.ListSyncer)
  80. {
  81.     for (int i = 0; i <  MyZennoList.Count;)
  82.         if (MyZennoList[i].Equals("заданный текст", StringComparison.Ordinal)) MyZennoList.RemoveAt(i); else i++;
  83. }
Add Comment
Please, Sign In to add comment