Поиск в тексте слов из списка

henzo

Client
Регистрация
26.09.2011
Сообщения
23
Благодарностей
2
Баллы
3
Нужно в тексте искать слова из списка. И если в строке есть какое-то слово из списка то надо true возвращать, а если нет - false.

Т.е есть строка типа "Кушать это хорошо" и список вида

  • гулять
  • бегать
  • кушать
  • веселиться
в данном случае в строке есть одно из слов из списка и надо вернуть true.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 470
Благодарностей
8 691
Баллы
113
Нужно в тексте искать слова из списка. И если в строке есть какое-то слово из списка то надо true возвращать, а если нет - false.

Т.е есть строка типа "Кушать это хорошо" и список вида

  • гулять
  • бегать
  • кушать
  • веселиться
в данном случае в строке есть одно из слов из списка и надо вернуть true.
Например два варианта:

1. В цикле перебирать строки из списка ключевых слов и проверять вхождение в фразе.
2. Разложить фразу по словам в список (с разделителем "пробел"), объединить список ключевых слов в переменную и в цикле брать слова фразы из списка и проверять вхождение в вашей базе ключ. слов.

2-ой способ предпочтительнее, т.к. будет меньше итераций цикла.
 

henzo

Client
Регистрация
26.09.2011
Сообщения
23
Благодарностей
2
Баллы
3
Вот такой первый вариант? Что-то не пашет почему-то false пишет даже если фраза в тексте есть, что-то не то.
C#:
var check = project.Variables["text"].Value;
var list = project.Lists["listname"];

for(int i = 0; i < list.Count; i++)
{
    if (check.Contains(list[i]))
    {
        return "true";
    }
    else
    {
        return "false";
    }
}
 

henzo

Client
Регистрация
26.09.2011
Сообщения
23
Благодарностей
2
Баллы
3
Понял в чем была проблема - проверялось только первое слово из списка, если его вхождения в строке не было - перебор завершался через return.
 

kolina

Client
Регистрация
05.10.2019
Сообщения
158
Благодарностей
44
Баллы
28
Например два варианта:

1. В цикле перебирать строки из списка ключевых слов и проверять вхождение в фразе.
2. Разложить фразу по словам в список (с разделителем "пробел"), объединить список ключевых слов в переменную и в цикле брать слова фразы из списка и проверять вхождение в вашей базе ключ. слов.

2-ой способ предпочтительнее, т.к. будет меньше итераций цикла.
А как кубиком разложить фразу в список: каждое слово с новой строки?
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
121
Баллы
43
Фразу в переменную, дальше "Обработка текста" ➡➡➡ Заменить
Ищем {-String.Space-}
Заменяем на {-String.Enter-}
Результат кладем в переменную, а уже эту переменную в список
 
  • Спасибо
Реакции: kolina

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 470
Благодарностей
8 691
Баллы
113
Можно проще: Обработка текста - В список с разделителем Пробел .

54329
 
  • Спасибо
Реакции: Platon и kolina

kolina

Client
Регистрация
05.10.2019
Сообщения
158
Благодарностей
44
Баллы
28
Огромное спасибо!!! Получилось. Попробовал и так и так. Одним кубиком больше нравится. И переменных меньше. А то все переменные на экране уже не помещаются.
 
  • Спасибо
Реакции: Sergodjan

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