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

  • Автор темы Автор темы inotoxic
  • Дата начала Дата начала
скажем так. есть 10 файлов, солово мама, и из всех файлов ведернуть строки со словом мама игноря на регистр , правильно понимаю
Да, на пример ключевое слово мама должно найти все ниже представленные строки, а теперь тот снипет нашол бы только вторую строку:
1. Мама
2. мама
3. МамА
4. ...
 
так игнорить или нет. зачем тогда игнор если надо имено уникальную найти ?? чёт какая путаница
 
а почему ты пишешь что только вторую строку, вот ты как всё путаешь
Ну может я не так выразился, я говорил об этом снипете:
Код:
Развернуть Свернуть Копировать
// берем переменную для полного совпадения
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
а где ты ты тут игнор регистру указываешь ????
 
а где ты ты тут игнор регистру указываешь ????
Вот потому и спрашиваю где тут ставить игнор

Вот этот код нормально работает, но только одну строку выводить:
Код:
Развернуть Свернуть Копировать
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();
 
вот что в link можно тоже там тоже поиздеваться еси ты её сам составил и понял
 
Уже разобрался спасибо
 
Как? Можно ответ, Мне надо сделать регистро не зависимый поиск по сторкам. Желательно регуляркой.

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
Немного не в тему. А обязательно для синхронизации списков использовать SyncObjects.ListSyncer? Что будет, если использовать SyncObject?
 
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
 
А как можно в данной конструкции использовать регулярное выражение из переменной вместо "моя фраза"?

Я в С# не силен, поиск по форуму и 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
del
 
Последнее редактирование:
Ребят а как то можно удалить из списка слова с точным вхождением фразы?

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

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

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

И вот эти строки с точным вхождением удалить.
Спасибо!
Не совсем понял значение "точное вхождение". Посмотрите экшн операции над списком, удалить строки содержащие текст...
 
  • Оценить
Реакции: Сибиряк и doc
Ребят а как то можно удалить из списка слова с точным вхождением фразы?
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--;
        }
    }
}
 
Не совсем понял значение "точное вхождение". Посмотрите экшн операции над списком, удалить строки содержащие текст...
"точное вхождение" это как есть в переменной.
А ведь и правда уже есть решение... как то ранее не пользовался)) Спасибо.


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 отлично такие строки обрабатывает.
За что ему огромное спасибо)
 
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 а можно как то сделать тоже самое со строками в переменной?
П.С точнее удалить строку с вхождением слова
 
Код:
Развернуть Свернуть Копировать
// берем из переменной текст, который надо искать
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
 
Второй год начинаю делать свой шаблон, и плюю на это дело.Так как не могу найти как это сделать.

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

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

В общем, главная задача, чтоб поиск осуществлялся моментально. Как если бы я в ручную открыл документ и вписал в поиск что мне надо найти.
 
Уже не надо.
 
а как найти дубли в списке или таблице и скопировать их ?
 
Как пихнуть в C# код Json переменную ?

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

а надо {-Json.user.username-}
 
Помогите пожалуйста похожая ситуация
есть переменная text = в которой текст с html кодом.
Нужно выполнить поиск по этому тексты и вывести все совпадения которые есть в списке teg
 
Помогите пожалуйста похожая ситуация
есть переменная text = в которой текст с html кодом.
Нужно выполнить поиск по этому тексты и вывести все совпадения которые есть в списке teg
Пример файла в студию
 

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