найти номер строки в таблице содержащей значение

eldar

Client
Регистрация
01.07.2011
Сообщения
227
Благодарностей
14
Баллы
18
здравствуйте
подскажите - есть значение_переменной, как можно определить номер строки в файле .csv в которой содержится это значение?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
  • Спасибо
Реакции: eldar

eldar

Client
Регистрация
01.07.2011
Сообщения
227
Благодарностей
14
Баллы
18

mig-z

Client
Регистрация
05.12.2014
Сообщения
303
Благодарностей
71
Баллы
28
спасибо, а как изменить код* на поиск номера строки по таблице?
* файл http://zennolab.com/discussion/threads/snipet-proverki-nalichija-stroki-v-spiske.10403/#post-74104
Вот держите кому надо. Так и не нашел готового решения на форуме.
Этот сниппет ищет по столбцу 0 совпадения с переменной и если находит то возвращает (прим. для новичков "Выдает" номер строки с этим совпадением).

Код:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1

var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1

int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1



for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m) == chekVar1)
            {
            return m;
            }
    }
 

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18
Здравствуйте!
Скажите, а как вывести номер строки в таблице по частичному совпадению?
К примеру: если слово "мама" встречается в ячейке с текстом "мама мыла раму", то нужно вывести номер строки совпадения.
Спасибо!
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 166
Благодарностей
2 167
Баллы
113
Если код с последнего совета верный, то хватит просто заменить в нем 1 строку:
C#:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1
var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1
int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1
for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m).Contains(chekVar1))
            {
                return m;
            }
    }
 

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18
Если код с последнего совета верный, то хватит просто заменить в нем 1 строку:
C#:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1
var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1
int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1
for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m).Contains(chekVar1))
            {
                return m;
            }
    }
Превосходно работает! Спасибо!
 
  • Спасибо
Реакции: C2H5OH

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18

orka13

Client
Регистрация
07.05.2015
Сообщения
2 166
Благодарностей
2 167
Баллы
113
Простите еще вопрос.
Этот экшн ищет любое совпадение символов, как сделать, чтобы искал целые слова?
Спасибо.
Метод String.Contains (String) (System) - MSDN - там описан метод и работа с регистром, если надо углубляться.
Не совсем понял вопроса. Типа надо чтобы при поиске по слову "форум" находило только "бла бла бла форум бла бла", но не "бла бла бла форумы блабла" ?
 
  • Спасибо
Реакции: Hannes и trubiser

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18
Метод String.Contains (String) (System) - MSDN - там описан метод и работа с регистром, если надо углубляться.
Не совсем понял вопроса. Типа надо чтобы при поиске по слову "форум" находило только "бла бла бла форум бла бла", но не "бла бла бла форумы блабла" ?
Да именно так. Нужно еще без учета регистра. Если покажете пример, буду рад. Спасибо!
 
Последнее редактирование:

orka13

Client
Регистрация
07.05.2015
Сообщения
2 166
Благодарностей
2 167
Баллы
113
Да именно так. Нужно еще без учета регистра. Если покажете пример, буду рад. Спасибо!
C#:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1
var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1
int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1
for (int m = 0; m<=RowCount1; m++)
    {
        string pattern = "\\b" + Regex.Escape(chekVar1) + "\\b"; // формируем регулярку на основе экранированной фразы поиска и границ слова на ее краях
        Match match = Regex.Match(table_1.GetCell(table_1ColText1, m), pattern, RegexOptions.IgnoreCase); // если не надо без учета регистра, то удалите: ", RegexOptions.IgnoreCase"
        if (match.Success)
            {
                return m;
            }  
    }
return "не нашли ничего";
все, я спать )).
 

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18
C#:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1
var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1
int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1
for (int m = 0; m<=RowCount1; m++)
    {
        string pattern = "\\b" + Regex.Escape(chekVar1) + "\\b"; // формируем регулярку на основе экранированной фразы поиска и границ слова на ее краях
        Match match = Regex.Match(table_1.GetCell(table_1ColText1, m), pattern, RegexOptions.IgnoreCase); // если не надо без учета регистра, то удалите: ", RegexOptions.IgnoreCase"
        if (match.Success)
            {
                return m;
            }
    }
Спасибо огромное!
 

Winnie

Client
Регистрация
02.06.2016
Сообщения
9
Благодарностей
20
Баллы
3
Всем привет! А как будет выглядеть сниппет по частичному совпадению, но без учета регистра? По сути в сниппет 1 нужно вставить это условие, но где и как непонятно. Также интересует как получить несколько строк, содержащих частичное совпадение.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 166
Благодарностей
2 167
Баллы
113
Всем привет! А как будет выглядеть сниппет по частичному совпадению, но без учета регистра? По сути в сниппет 1 нужно вставить это условие, но где и как непонятно. Также интересует как получить несколько строк, содержащих частичное совпадение.
гугли:
c# string contains ignorecase
НО на форуме жаловались что оно багово работает.
Так что вперед через костыль к приведению обеих фраз к нижнему регистру:
Меняем:
C#:
if (table_1.GetCell(table_1ColText1, m).Contains(chekVar1))
на:
C#:
if (table_1.GetCell(table_1ColText1, m).ToLower().Contains(chekVar1.ToLower()))
хз, если не ошибся с синтаксисом, не на чем уже проверить.
 
  • Спасибо
Реакции: Winnie

Winnie

Client
Регистрация
02.06.2016
Сообщения
9
Благодарностей
20
Баллы
3
Спасибо! А что делать, если строк несколько? Как выцепить все номера строк, имеющих нужную фразу?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 166
Благодарностей
2 167
Баллы
113
Добавлять их номера в список без остановки цикла. Как такое делать на C# гуглите по форуме.
 
  • Спасибо
Реакции: Winnie

alya_6

Client
Регистрация
27.08.2018
Сообщения
172
Благодарностей
19
Баллы
18

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 462
Благодарностей
8 686
Баллы
113
  • Спасибо
Реакции: alya_6

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
273
Благодарностей
69
Баллы
28
Вот держите кому надо. Так и не нашел готового решения на форуме.
Этот сниппет ищет по столбцу 0 совпадения с переменной и если находит то возвращает (прим. для новичков "Выдает" номер строки с этим совпадением).

Код:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1

var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1

int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1



for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m) == chekVar1)
            {
            return m;
            }
    }
у меня почему то этот код вываливается с ошибкой "Выполнение действия CSharp OwnCode. Последовательность не содержит соответствующий элемент"
таблица с ссылками а в переменной ссылка, в таблице ссылка точно есть, другой код с получением ссылки из этого же списка отрабатывает норм. в чем может быть причина? мне тоже нужно получить номер строки в котором содержится ссылка.
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
348
Благодарностей
51
Баллы
28
Дорогой друг, подскажи еще такой вариант

я беру в таблице строку по регулярке:
Код:
(?<={-Variable.request-}).*Сделать
в итоге он выглядит сегодня вот так:
Код:
(?<=25\.06\.2020).*(?=Сделать)
как мне в таблице найти номер строки по этому запросу, в котором есть переменная?
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
348
Благодарностей
51
Баллы
28

orka13

Client
Регистрация
07.05.2015
Сообщения
2 166
Благодарностей
2 167
Баллы
113

Festem

Client
Регистрация
21.02.2018
Сообщения
8
Благодарностей
0
Баллы
1
Вот держите кому надо. Так и не нашел готового решения на форуме.
Этот сниппет ищет по столбцу 0 совпадения с переменной и если находит то возвращает (прим. для новичков "Выдает" номер строки с этим совпадением).

Код:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1

var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1

int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1



for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m) == chekVar1)
            {
            return m;
            }
    }
Помогите, пожалуйста! Как этот код заставить искать номер строки по совпадению не из одного столбца, а из нескольких.
 

bad robot

Client
Регистрация
07.03.2011
Сообщения
178
Благодарностей
28
Баллы
28
Вот держите кому надо. Так и не нашел готового решения на форуме.
Этот сниппет ищет по столбцу 0 совпадения с переменной и если находит то возвращает (прим. для новичков "Выдает" номер строки с этим совпадением).

Код:
string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1

var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1

int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1-1;//Количество строк-1 в таблице table_1



for (int m = 0; m<=RowCount1; m++)
    {
        if (table_1.GetCell(table_1ColText1, m) == chekVar1)
            {
            return m;
            }
    }
может ли кто-то допилить код, чтобы искало не одно первое совпадение, а все, и клало номера их строк в список. Заранее благодарю.
 
Последнее редактирование:
  • Спасибо
Реакции: MaxLucky

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
165
Благодарностей
13
Баллы
18

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
C#:
var SpisokResult = project.Lists["ИмяЗенноСписка"]; // указать имя зенносписка

string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1
var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1

int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1 -1;//Количество строк-1 в таблице table_1

for (int m = 0; m <= RowCount1; m++)
{
    if (table_1.GetCell(table_1ColText1, m) == chekVar1)
    {

        SpisokResult.Add(m.ToString());

    }
}
 
  • Спасибо
Реакции: termit, Sho и MaxLucky

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
165
Благодарностей
13
Баллы
18
C#:
var SpisokResult = project.Lists["ИмяЗенноСписка"]; // указать имя зенносписка

string table_1ColText1 = "0";//Номер столбика таблицы table_1 с текстовыми значениями для первой фильтрации Текст 1
var table_1 = project.Tables["Таблица 1"];//переменная для таблицы table_1
var chekVar1 = project.Variables["checkvar"].Value;//переменная для сравнения 1

int RowCount1 = project.Tables["Таблица 1"].RowCount;//Количество строк в таблице table_1
RowCount1 = RowCount1 -1;//Количество строк-1 в таблице table_1

for (int m = 0; m <= RowCount1; m++)
{
    if (table_1.GetCell(table_1ColText1, m) == chekVar1)
    {

        SpisokResult.Add(m.ToString());

    }
}
Благодарю!
 

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