Возможно одним выражением из списка удалить все строки, содержащие больше $17/оставить меньше $18 ??

  • Автор темы Автор темы smartwisard
  • Дата начала Дата начала

smartwisard

Client
Регистрация
17.01.2017
Сообщения
824
Реакции
83
Баллы
28
Например удалить $18, $19, $20, $21, $22, $23, $24, $25 и выше?
 
Последнее редактирование:
Одним выражением не получилось
C#:
Развернуть Свернуть Копировать
var list = project.Lists["spisok"];
int num = 18;

for(int i = 0; i < list.Count; i++)
{
    if(int.Parse(list[i].Replace("$", "")) >= num) list.RemoveAt(i);
}
 
  • Оценить
Реакции: smartwisard
потерто
 
Наверное ещё сделаю регекс, определяющий $num, затем определю номера строчек, затем их удалю из первоначального списка.


$17
$18
$19
$12
$15
$12
$50
$54
$57
$20
$24
$45
 
Последнее редактирование:
В первом сниппете цикл нужно было снизу в верх крутить и потому не все удаляло. В этом сниппете, если в строке не будет числа, такую строку также удаляет.
C#:
Развернуть Свернуть Копировать
var list = project.Lists["spisok"];
int num = 17;
Regex regex = new Regex(@"\d+");
for(int i = list.Count - 1; i >= 0; i--)
{
    int number;
    bool isNumber = int.TryParse(regex.Match(list[i]).Value, out number);
    if(isNumber)
    {
        if(number >= num)
        {
            list.RemoveAt(i);
        }
    }
    else list.RemoveAt(i);
}
 

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