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

smartwisard

Client
Регистрация
17.01.2017
Сообщения
824
Благодарностей
83
Баллы
28
Например удалить $18, $19, $20, $21, $22, $23, $24, $25 и выше?
 
Последнее редактирование:

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Одним выражением не получилось
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

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
потерто
 

smartwisard

Client
Регистрация
17.01.2017
Сообщения
824
Благодарностей
83
Баллы
28

smartwisard

Client
Регистрация
17.01.2017
Сообщения
824
Благодарностей
83
Баллы
28
Наверное ещё сделаю регекс, определяющий $num, затем определю номера строчек, затем их удалю из первоначального списка.


$17
$18
$19
$12
$15
$12
$50
$54
$57
$20
$24
$45
 
Последнее редактирование:

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
В первом сниппете цикл нужно было снизу в верх крутить и потому не все удаляло. В этом сниппете, если в строке не будет числа, такую строку также удаляет.
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);
}
 

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