Как удалить строку по значению двух ячеек?

yriy158

Client
Регистрация
10.08.2013
Сообщения
490
Благодарностей
302
Баллы
63


Как удалить с таблицы строку, содержащую в первой ячейке W, а во второй 3?
Если брать удалить строку содержащую W, то удаляет две строки, так само как и при удалении по значению сто второй ячейки.
Пробовал указать так: W{-String.Tab-}3 - не работает.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
перебрать в цикле все строки
 
  • Спасибо
Реакции: yriy158

yriy158

Client
Регистрация
10.08.2013
Сообщения
490
Благодарностей
302
Баллы
63
перебрать в цикле все строки
то есть, брать строку и регуляркой парсить на нужные значения?
А на Си шарпе тоже как-то попростому этого не сделать, не в курсе?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 567
Благодарностей
9 184
Баллы
113
Пробовал указать так: W{-String.Tab-}3 - не работает
Если Таблица это csv, то возможно, регулярка должна быть другой, с использованием точки с запятой или запятой с кавычками в качестве разделителя (нужно посмотреть формат таблицы через Notepad).
 
  • Спасибо
Реакции: yriy158

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
на с# будет тот же цикл. Короче, но не проще
Не нужны регулярки. В цикле ты берёшь строку 0 в переменные. Если переменная1==W и переменная2==3 - удаляешь строку 0, счетчик не увеличиваешь, берешь снова строку 0. Если условия не удовлетворяет - увеличиваешь счетчик и берёшь строку 1. И так, пока строки не кончатся
 
  • Спасибо
Реакции: one и yriy158

yriy158

Client
Регистрация
10.08.2013
Сообщения
490
Благодарностей
302
Баллы
63
на с# будет тот же цикл. Короче, но не проще
Не нужны регулярки. В цикле ты берёшь строку 0 в переменные. Если переменная1==W и переменная2==3 - удаляешь строку 0, счетчик не увеличиваешь, берешь снова строку 0. Если условия не удовлетворяет - увеличиваешь счетчик и берёшь строку 1. И так, пока строки не кончатся
Понял, спасибо!
Если Таблица это csv, то возможно, регулярка должна быть другой, с использованием точки с запятой или запятой с кавычками в качестве разделителя (нужно посмотреть формат таблицы через Notepad).
Таблица у меня в .тхт просто разделитель столбцов указана как двоеточие.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 567
Благодарностей
9 184
Баллы
113
Понял, спасибо!

Таблица у меня в .тхт просто разделитель столбцов указана как двоеточие.
Тогда нужно указывать регулярку с учетом двоеточия.
Но надо проверять, не факт что здесь можно применить такой метод.
Лучше действуйте как doc подсказал - через перебор строк в обычном цикле на кубиках.
 
Последнее редактирование:
  • Спасибо
Реакции: yriy158

yriy158

Client
Регистрация
10.08.2013
Сообщения
490
Благодарностей
302
Баллы
63
Тогда нужно указывать регулярку с учетом двоеточия.
Но надо проверять, не факт что здесь можно применить такой метод.
Лучше действуйте как doc подсказал - через перебор строк в обычном цикле на кубиках.
Опять же, спасибо за помощь)
 

smartwisard

Client
Регистрация
17.01.2017
Сообщения
824
Благодарностей
83
Баллы
28
Мне тоже понадобилось почистить таблицу от дублей. Вот шаблончик. Я начинающий, возможны ошибки.
А вот это == не получилось
на с# будет тот же цикл. Короче, но не проще
Не нужны регулярки. В цикле ты берёшь строку 0 в переменные. Если переменная1==W и переменная2==3 - удаляешь строку 0, счетчик не увеличиваешь, берешь снова строку 0. Если условия не удовлетворяет - увеличиваешь счетчик и берёшь строку 1. И так, пока строки не кончатся
получилось вот так !=
Жду подсказок, что изменить, с удовольствием постараюсь понять.
 

Вложения

SergSh

Client
Регистрация
10.05.2017
Сообщения
540
Благодарностей
395
Баллы
63
Таблица у меня в .тхт
Код:
var tbl = project.Lists["tbl"];//список строк
for(int i = 0; i < tbl.Count; i++)
{
    string[] row = tbl[i].Split(':'); //разбивка строки в массив 
    if(row[0].Contains("w") && row[1].Contains("3"))//если в первой w и в второй 3
    {
        tbl.RemoveAt(i);//удалить из списка
        i--;
    }
}
 
  • Спасибо
Реакции: yriy158

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