Поиск по списку

  • Автор темы Автор темы gs517
  • Дата начала Дата начала

gs517

Client
Регистрация
18.05.2013
Сообщения
138
Реакции
15
Баллы
18
Добро! Подкиньте пожалуйста снип. "Поиск по списку". нашел аналог, но там кладёт в другой список результат, а мне бы в переменную записывать. в C# не разбираюсь, жаль(

Список огромный 7 мб текста. Стандартными методами сильно нагружает, если ещё и в 20 потоков
 
ну грузить будет не меньше... но вот...
var list = project.Lists["Список1"];
string needle = project.Variables["то что ищем"].Value;
foreach(string data in list)
{
if(data.Contains(needle))
return data;
}
return "ничего не найдено";
 
вот такой же только для поиска регуляркой

Код:
Развернуть Свернуть Копировать
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["regex"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем список, в котором будем искать
var sourceList = project.Lists["list1"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем строку регулярным выражением, если есть совпадение возвращаем найденное
        if (parserRegex.IsMatch(str))
        {
            return str;     
        }
    }
}
return "";
 
  • Спасибо
Реакции: mig-z
mylist = mylist.Where(s=>System.Text.RegularExpressions.Regex.IsMatch(s, "find me")).ToList(); //фильтр списка по регулярному выражению
 
ищет по списку регуляркой и выдает номер строки которая найдена
Код:
Развернуть Свернуть Копировать
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["search_string"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем список, в котором будем искать
var sourceList = project.Lists["base"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем строку регулярным выражением, если есть совпадение возвращаем найденное
        if (parserRegex.IsMatch(str))
        {
            return i+1;     
        }
    }
}
return "";
 
  • Спасибо
Реакции: xawer и partnerleon
Код:
Развернуть Свернуть Копировать
return i+1;
+1 не нужно. у нас списки от нуля начинаются. тупанул.
 

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