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

sergboss

Client
Регистрация
19.09.2016
Сообщения
52
Благодарностей
3
Баллы
8
написал код на python но не знаю как на C#
Python:
teg = list(open('teg.txt'))
test = 'Hyundai dfsdg sfg 564, fgbd BMW'
s = []
for i in teg:
    if test.count(i[:-1]) == True:
          s.append(i)

print list(set(s))

Есть переменная с текстом x= 'text <strong>ok</strong> dfk BMW'
Есть список teg.txt где перечислены список авто
Нужно выполнить поиск и найти все совпадения
и записать в переменную результат

BMW - если 1 совпадение
Hyundai, BMW - если больше 2-х выводить через запятую

и.т.д
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
C#:
var x = "text <strong>ok</strong> dfk BMW";
var legfiles = File.ReadAllLines("leg.txt").ToList();
var res = legfiles.Where(x=>x.Contains(x)).ToList();
 
  • Спасибо
Реакции: sergboss

Podric

Client
Регистрация
16.08.2019
Сообщения
76
Благодарностей
6
Баллы
8
Код:
// берем из переменной текст, который надо искать
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";
так должно работать
а как сделать чтобь удалять строку при точном совпадении?
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
а как сделать чтобь удалять строку при точном совпадении?
C#:
string search = project.Variables["var"].Value;;
var lst = project.Lists["list"];

for(int i=lst.Count-1; i>0; i--)
{
    if(lst.ElementAt(i).Equals(search)) lst.RemoveAt(i);
}
 
  • Спасибо
Реакции: Podric

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18
Есть снипет поиска строки в списке
Код:
// берем из переменной текст, который надо искать
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.Contains(textContains))
        {

return "yes";
}
}
}
// если ничего не нашли возвращаем "no"
return "no";


Так например, если в списке "Black_list" есть строки:
aska-realty
mor-realty
etagi
sochi-realinvest
incom_realty
floorsgroup

А переменная "URL_magazine" имеет значение incom, то снипет определяет, что в списке уже есть похожее значение.

Как нужно изменить код, чтобы отрабатывало по полному соответствию строки, а не по части совпадения?
А как вывести номер строки? Спасибо
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
  • Спасибо
Реакции: trubiser

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
И если нужно полное совпадение то не
(str.Contains(textContains))
а
(str.Equals(textContains))
 

Ostap1992

Client
Регистрация
26.02.2020
Сообщения
44
Благодарностей
5
Баллы
8
подскажите плиз , у меня в списке есть текст допустим строк 100 и есть список слов из 20-30 как то можно проверить быстро текст на наличие этих слов из переменной
и сохранить только тот текст который содержит нужные слова в переменную
 

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