Проверка переменой на определеное ключевое слово!

sh00r00p

Новичок
Регистрация
19.08.2015
Сообщения
5
Благодарностей
0
Баллы
1
Подскажите пожалуйста как можно реализовать подобное?

Допустим есть переменная "title" в ней текст "монтаж подвесных потолков армстронг" (и он будет меняться при каждом новом цикле)

Хочу сделать проверку данной переменной на сотни ключевых слов, например:

потолок
потолк
ремонт
сантехник
ну и тд.

и чтобы в зависимости от того с каким ключевым словом было совпадение, переход шел на определеный "Spyntax", т.е. у каждого ключевого слова будет свой "spyntax"
а если не нашел ни одного совпадения, то шел на дефолтный "spyntax"

Понимаю что лучше всего бы к моей задаче подошел экшен "shift" но он проверяет на целое выражение т.е. 'потолок' == 'потолок', а нужно чтобы выполнялась именно проверка на совпадение в тексте.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
Подскажите пожалуйста как можно реализовать подобное?

Допустим есть переменная "title" в ней текст "монтаж подвесных потолков армстронг" (и он будет меняться при каждом новом цикле)

Хочу сделать проверку данной переменной на сотни ключевых слов, например:

потолок
потолк
ремонт
сантехник
ну и тд.

и чтобы в зависимости от того с каким ключевым словом было совпадение, переход шел на определеный "Spyntax", т.е. у каждого ключевого слова будет свой "spyntax"
а если не нашел ни одного совпадения, то шел на дефолтный "spyntax"

Понимаю что лучше всего бы к моей задаче подошел экшен "shift" но он проверяет на целое выражение т.е. 'потолок' == 'потолок', а нужно чтобы выполнялась именно проверка на совпадение в тексте.
в цикле берем строку из списка ключевых слов и проверяем ее вхождение с помощью экшена Обработка текста -> Regex, далее IF с проверкой на пустоту (если не пусто, то идем на спец-спинтакс)..
цикл можно организовать со счетчиком - брать проверочный ключ по номеру строки..
как только проверили весь список и не нашлось вхождений - идем на дефолтный спинтакс..
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Если ключевых слов будет не сильно много, то можно сделать следующим образом:
1. Объединяем список с ключами через свой разделитель - |
2. Обработка текста - Regex - Текст для обработки - вставляем свою фразу, регулярка - вставляем переменную, в которой объединённые ключи.
3. Проверяем, попало ли что то в переменную. Если да - есть совпадение, обрабатываем как нужно. Нет - соответственно и совпадений нет.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
в цикле берем строку из списка ключевых слов и проверяем ее вхождение с помощью экшена Обработка текста -> Regex, далее IF с проверкой на пустоту (если не пусто, то идем на спец-спинтакс)..
цикл можно организовать со счетчиком - брать проверочный ключ по номеру строки..
как только проверили весь список и не нашлось вхождений - идем на дефолтный спинтакс..
Этот вариант лучше, если не знаешь наверняка сколько проверок будет.
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
523
Благодарностей
255
Баллы
63
Премного уважаемые знатоки C#, подскажите как будет выглядеть код вот этого
Безымянный.png
на C#.
Спасибо.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
Премного уважаемые знатоки C#, подскажите как будет выглядеть код вот этого
Посмотреть вложение 30137
на C#.
Спасибо.
Код:
string pattern = @"что парсить (регулярка)";
string text = "откуда парсить";
Regex newReg = new Regex(pattern);
MatchCollection matches = newReg.Matches(text);
return matches[0];
 
  • Спасибо
Реакции: p-sergei и doc

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
C#:
var response = project.Variables["Response"].Value;

if (response.Contains("Подтверждение пересылки с ящика"))
{
    //найдено, дальнейшие действия
}
else
{
    //не найдено, какие то действия, но else тут можно и не ставить
}
 
  • Спасибо
Реакции: Sergodjan и p-sergei

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
  • Спасибо
Реакции: Sergodjan и p-sergei

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
  • string pattern = @"что парсить (регулярка)";
  • string text = "откуда парсить";
  • Regex newReg = new Regex(pattern);
  • MatchCollection matches = newReg.Matches(text);
  • return matches[0];
А как получить не первое значение, а общее число найденных совпадений в коллекции?
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
  • Спасибо
Реакции: luserz

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
  • Спасибо
Реакции: Sergodjan

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