C# поиск по списку

Saulius S.

Client
Регистрация
19.08.2016
Сообщения
44
Благодарностей
7
Баллы
8
скажем так. есть 10 файлов, солово мама, и из всех файлов ведернуть строки со словом мама игноря на регистр , правильно понимаю
Да, на пример ключевое слово мама должно найти все ниже представленные строки, а теперь тот снипет нашол бы только вторую строку:
1. Мама
2. мама
3. МамА
4. ...
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
так игнорить или нет. зачем тогда игнор если надо имено уникальную найти ?? чёт какая путаница
 

Saulius S.

Client
Регистрация
19.08.2016
Сообщения
44
Благодарностей
7
Баллы
8

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

Saulius S.

Client
Регистрация
19.08.2016
Сообщения
44
Благодарностей
7
Баллы
8

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

Saulius S.

Client
Регистрация
19.08.2016
Сообщения
44
Благодарностей
7
Баллы
8
а почему ты пишешь что только вторую строку, вот ты как всё путаешь
Ну может я не так выразился, я говорил об этом снипете:
Код:
// берем переменную для полного совпадения
var parserPattern = project.Variables["key_list"].Value;
// не превращаем в регулярное выражение
// берем переменную отвечающую за нужное количество найденных дублей
var dubli = project.Variables["dubli"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["files_list"];
// получаем список, в который будем класть
var destList = project.Lists["torrents"];
var sovpad = sourceList.Where(x => Regex.IsMatch(x, parserPattern)).ToList(); // Все совпадения пихаем в список
if (sovpad.Count()>0 || sovpad.Count()>dubli.Count())
    destList.AddRange(sovpad);
что он начол только вторую строку, а мне надо что бы он все строки нашол и записал в отдельный список.
 
  • Спасибо
Реакции: evgen2208

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а где ты ты тут игнор регистру указываешь ????
 

Saulius S.

Client
Регистрация
19.08.2016
Сообщения
44
Благодарностей
7
Баллы
8
а где ты ты тут игнор регистру указываешь ????
Вот потому и спрашиваю где тут ставить игнор

Вот этот код нормально работает, но только одну строку выводить:
Код:
List<string> list = new List<string>();
list.AddRange(project.Lists["all"]);
string myString = project.Variables["recipient"].Value;
var matchingvalues = list
.FindAll(x => x.IndexOf(myString, StringComparison.OrdinalIgnoreCase) != -1);
return matchingvalues.First();
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
вот что в link можно тоже там тоже поиздеваться еси ты её сам составил и понял
 

Saulius S.

Client
Регистрация
19.08.2016
Сообщения
44
Благодарностей
7
Баллы
8
Уже разобрался спасибо
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113

Saulius S.

Client
Регистрация
19.08.2016
Сообщения
44
Благодарностей
7
Баллы
8
Как? Можно ответ, Мне надо сделать регистро не зависимый поиск по сторкам. Желательно регуляркой.

UPD. уже нашел ответ))
http://zennolab.com/discussion/threads/vozmozhno-li-ubrat-uchjot-registra-bukv.31234/#post-225288
Вот этот код у меня очень хорошо работает :-)
Код:
List<string> list = new List<string>();
list.AddRange(project.Lists["files_list"]);
string myString = project.Variables["key_list"].Value;
var destList = project.Lists["test"];
var matchingvalues = list
.FindAll(x => x.IndexOf(myString, StringComparison.OrdinalIgnoreCase) != -1);
destList.AddRange(matchingvalues);
 
  • Спасибо
Реакции: serg1208 и WEISS

justhelen

Client
Регистрация
18.11.2009
Сообщения
267
Благодарностей
134
Баллы
43
Немного не в тему. А обязательно для синхронизации списков использовать SyncObjects.ListSyncer? Что будет, если использовать SyncObject?
 

Leoneed

Client
Регистрация
03.05.2015
Сообщения
55
Благодарностей
38
Баллы
18
C#:
var lst = project.Lists["Список1"];
var rez = lst.Select(x=>x).Where(x=>x=="моя фраза").ToList();
return rez.Count;
По идее так вернет количество
А как можно в данной конструкции использовать регулярное выражение из переменной вместо "моя фраза"?

Я в С# не силен, поиск по форуму и Google не помогли.
Попробовал вот такую конструкцию:
C#:
var parserRegexPattern = project.Variables["listSearchRegex"].Value; // переменная в которой регулярка
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
var lst = project.Lists["text"]; // список в котором ищем
var rez = lst.Select(x=>x).Where(x=>x==parserRegex).ToList();
return rez.Count;
В результате ошибка: оператор == не может использоваться с System.Text.RegularExpressions.Regex
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
А как можно в данной конструкции использовать регулярное выражение из переменной вместо "моя фраза"?

Я в С# не силен, поиск по форуму и Google не помогли.
Попробовал вот такую конструкцию:
C#:
var parserRegexPattern = project.Variables["listSearchRegex"].Value; // переменная в которой регулярка
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
var lst = project.Lists["text"]; // список в котором ищем
var rez = lst.Select(x=>x).Where(x=>x==parserRegex).ToList();
return rez.Count;
В результате ошибка: оператор == не может использоваться с System.Text.RegularExpressions.Regex
Код:
var parserRegexPattern = project.Variables["listSearchRegex"].Value; // переменная в которой регулярка
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);

var lst = project.Lists["text"]; // список в котором ищем
var rez = lst.Select(x=>x).Where(x=>parserRegex.IsMatch(x)).ToList();
return rez.Count;
 
  • Спасибо
Реакции: justhelen и Leoneed

[Pacman]

Client
Регистрация
29.05.2017
Сообщения
279
Благодарностей
168
Баллы
43
del
 
Последнее редактирование:
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
Ребят а как то можно удалить из списка слова с точным вхождением фразы?

Пример:
В переменной var1 есть фраза "купить машину"
В списке List1 фразы:
купить машину в москве
купить подержанную машину
купить машины для чего-то там))
приобрести автомобиль в спб
купить машину тойота

И вот эти строки с точным вхождением удалить.
Спасибо!
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Ребят а как то можно удалить из списка слова с точным вхождением фразы?

Пример:
В переменной var1 есть фраза "купить машину"
В списке List1 фразы:
купить машину в москве
купить подержанную машину
купить машины для чего-то там))
приобрести автомобиль в спб
купить машину тойота

И вот эти строки с точным вхождением удалить.
Спасибо!
Не совсем понял значение "точное вхождение". Посмотрите экшн операции над списком, удалить строки содержащие текст...
 
  • Спасибо
Реакции: Сибиряк и doc

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Ребят а как то можно удалить из списка слова с точным вхождением фразы?
C#:
IZennoList list = project.Lists["List1"];
string str = project.Variables["var1"].Value;

lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < list.Count; i++) {
        if (list[i].Contains(str)) {
            list.RemoveAt(i);
            i--;
        }
    }
}
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
Не совсем понял значение "точное вхождение". Посмотрите экшн операции над списком, удалить строки содержащие текст...
"точное вхождение" это как есть в переменной.
А ведь и правда уже есть решение... как то ранее не пользовался)) Спасибо.


C#:
IZennoList list = project.Lists["List1"];
string str = project.Variables["var1"].Value;

lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < list.Count; i++) {
        if (list[i].Contains(str)) {
            list.RemoveAt(i);
            i--;
        }
    }
}
Попробую! Спасибо!
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
Сейчас попробовал штатную функцию удаления строк если есть вхождение
Посмотрите экшн операции над списком, удалить строки содержащие текст...
Так вот у меня не срабатывает если в строке большая строка текста. Хотя на фильтровании ключевиков работала.
А вот код приведенный @Dimionix отлично такие строки обрабатывает.
За что ему огромное спасибо)
 

fri-lancer

Client
Регистрация
01.10.2013
Сообщения
418
Благодарностей
156
Баллы
43
C#:
IZennoList list = project.Lists["List1"];
string str = project.Variables["var1"].Value;

lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < list.Count; i++) {
        if (list[i].Contains(str)) {
            list.RemoveAt(i);
            i--;
        }
    }
}
@Dimionix а можно как то сделать тоже самое со строками в переменной?
П.С точнее удалить строку с вхождением слова
 

weer17

Новичок
Регистрация
08.08.2017
Сообщения
7
Благодарностей
0
Баллы
1
Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["URL_magazine"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Black_list"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str == textContains)
        {


return "yes";
}
}
}
// если ничего не нашли возвращаем "no"
return "no";
так должно работать
Коллеги, у кого найдётся пару минут свободных, помогите прикрутить данный код , сам не пойму куда и что вставить. Прилагаю свой примитивный пример, для вставки.
https://yadi.sk/d/zQjXAfzO3Z999K
 

weer17

Новичок
Регистрация
08.08.2017
Сообщения
7
Благодарностей
0
Баллы
1
Второй год начинаю делать свой шаблон, и плюю на это дело.Так как не могу найти как это сделать.

Есть два списка, в первом списке находится одна строчка, надо проверить есть эта строчка или нету её во втором списке (в котором сотни строчек) Например, искомую строчку ложем в переменную и ищем во втором списке, и выводим оповещение, есть она там или нет.

Чтобы это работало без удаления строчек во втором списке , и чтобы это работало без некого перебора или цикла (тут чуток не понимаю возможно без этого не обойтись)

В общем, главная задача, чтоб поиск осуществлялся моментально. Как если бы я в ручную открыл документ и вписал в поиск что мне надо найти.
 

weer17

Новичок
Регистрация
08.08.2017
Сообщения
7
Благодарностей
0
Баллы
1
Уже не надо.
 

serg1208

Client
Регистрация
17.04.2018
Сообщения
331
Благодарностей
15
Баллы
18
а как найти дубли в списке или таблице и скопировать их ?
 

Mkayan

Client
Регистрация
04.08.2016
Сообщения
84
Благодарностей
6
Баллы
8
Как пихнуть в C# код Json переменную ?

К примеру "Свои" выглядят вот так project.Variables["peremennaya"].Value;

а надо {-Json.user.username-}
 

sergboss

Client
Регистрация
19.09.2016
Сообщения
52
Благодарностей
3
Баллы
8
Помогите пожалуйста похожая ситуация
есть переменная text = в которой текст с html кодом.
Нужно выполнить поиск по этому тексты и вывести все совпадения которые есть в списке teg
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Помогите пожалуйста похожая ситуация
есть переменная text = в которой текст с html кодом.
Нужно выполнить поиск по этому тексты и вывести все совпадения которые есть в списке teg
Пример файла в студию
 

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