Поиск и добавление текста в список (C#)

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Подскажите, пожалуйста, как на С# решить такую задачу.

Проверить список на наличие текста, если в списке нужного текста нет, то надо добавить его в список.

Может это решение можно как то переделать, но у меня ума не хватает его запустить правильно. Подскажите, что тут надо подправить?

C#:
// берем из переменной текст, который надо искать
var textContains = project.Variables["Text"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Список"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем строку
        if (str.Contains(textContains))
            return str;
    }
}
// если ничего не нашли возвращаем "no"
return "no";
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
// берем из переменной текст, который надо искать
var textContains = project.Variables["Text"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Список"];
// ищем в каждой строчке в списке
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение, возвращаем "no"
        if (str.Contains(textContains))
            return "no";
            //return null; // если раскомментировать эту строку, а предыдущую закомментировать (или удалить), выход будет по красной ветке (как вариант)
    }
}
// если нет совпадений, добавляем строку в список
sourceList.Add(textContains);
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Все четко, благодарю за оперативность.
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
C#:
// берем из переменной текст, который надо искать
var textContains = project.Variables["Text"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Список"];
// ищем в каждой строчке в списке
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение, возвращаем "no"
        if (str.Contains(textContains))
            return "no";
            //return null; // если раскомментировать эту строку, а предыдущую закомментировать (или удалить), выход будет по красной ветке (как вариант)
    }
}
// если нет совпадений, добавляем строку в список
sourceList.Add(textContains);
У меня данный код возвращает строку даже если будет только совпадение одного символа из слова.
Как искать точное совпадение слова ?
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
723
Благодарностей
474
Баллы
63
У меня данный код возвращает строку даже если будет только совпадение одного символа из слова.
Как искать точное совпадение слова ?
Данный код не ищет по символам, возможно ошибка все таки в вашем коде, так же проверьте переменную
var textContains = project.Variables["Text"].Value; по ней мы проверяем содержится ли переменная в строке.

Скиньте код который вы используете и несколько строк для поиска
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
Данный код не ищет по символам, возможно ошибка все таки в вашем коде, так же проверьте переменную
var textContains = project.Variables["Text"].Value; по ней мы проверяем содержится ли переменная в строке.

Скиньте код который вы используете и несколько строк для поиска
C#:
// берем из переменной текст, который надо искать
var _mazhor = project.Variables["mazhor"].Value;
// получаем список, в котором будем искать
var _otpravleno = project.Lists["Отправлено"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < _otpravleno.Count; i++)
    {
        // читаем строку из списка
        var _str = _otpravleno[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (_str == _mazhor)
        {


return "yes";
}
}
}
// если ничего не нашли возвращаем "no"
return "no";
C#:
//Список
14.01.23 10-39-56 (check) |||20|||Halenky
14.01.23 10-39-56 (check) |||20|||Carlos91000
14.01.23 10-39-56 (check) |||20|||che100
//В переменной поиска лежит текст например: 'che10' или 'с' и код находит совпадение, а не должен.
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
723
Благодарностей
474
Баллы
63
C#:
//Список
14.01.23 10-39-56 (check) |||20|||Halenky
14.01.23 10-39-56 (check) |||20|||Carlos91000
14.01.23 10-39-56 (check) |||20|||che100
//В переменной поиска лежит текст например: 'che10' или 'с' и код находит совпадение, а не должен.
Попробуйте так
C#:
// берем из переменной текст, который надо искать
var _mazhor = project.Variables["mazhor"].Value;
// получаем список, в котором будем искать
var _otpravleno = project.Lists["Отправлено"];
// ищем в каждой строчке в списке
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < _otpravleno.Count; i++)
    {
        // читаем строку из списка
        var _str = Regex.Match(_otpravleno[i], "(?<=\\|\\|\\|20\\|\\|\\|).*").Value; // "(?<=\\|\\|\\|20\\|\\|\\|).*" - нужно будет пропиcать нормальную регулярку
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (_str == _mazhor)
        {
            return "yes";
        }
    }
}
// если ничего не нашли возвращаем "no"
return "no";
 
  • Спасибо
Реакции: che100

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
А как можно переделать код чтобы искало именно конкретное предложение а не само слово в тексте?

На пример я ищу слово Spring, но там еще есть Spring Top. Spring Boss и т п... в итоге берет не ту строку, а нужно именно Spring
 

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