Поиск слова в переменной.

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Доброго времени зашедшим!

Помогите, пожалуйста, решить следующую задачу:

в переменной "А" адрес - Минск, Михася Лынькова, 87 к1 (прошу обратить внимание, что после слова "Лынькова" - запятая);

в переменной "Б" искомое слово - Олега Лынькова 98 (без запятой).

Мне надо, чтоб если слово "Лынькова" присутствует в переменной "А", это отразилось в переменной "С" в виде этого слова. Значение в переменных как в "А", так и в "Б" постоянно меняются.

Своими силами смог решить задачу только при полном совпадении. Если можно, помогите, пожалуйста!
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 244
Благодарностей
1 820
Баллы
113
в переменной "Б" искомое слово - Олега Лынькова 98 (без запятой).
Мне надо, чтоб если слово "Лынькова" присутствует в переменной "А"
Чтобы Вам помочь, не могли бы Вы объяснить, почему именно "Лынькова" ключевое слово, а не "Олега" или даже полная фраза "Олега Лынькова"?

Что точно могу сказать, так это то, что Вам в этой задаче поможет экшен Обработка текста и, в частности, его подфункции Regex (для поиска вхождения одной строки в другую) и Split (для разбиения строки по указанному разделителю на составляющие). В составлении регулярных выражений Вам поможет Тестер регулярных выражений
 
  • Спасибо
Реакции: Эдгар

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Чтобы Вам помочь, не могли бы Вы объяснить, почему именно "Лынькова" ключевое слово, а не "Олега" или даже полная фраза "Олега Лынькова"?

Что точно могу сказать, так это то, что Вам в этой задаче поможет экшен Обработка текста и, в частности, его подфункции Regex (для поиска вхождения одной строки в другую) и Split (для разбиения строки по указанному разделителю на составляющие). В составлении регулярных выражений Вам поможет Тестер регулярных выражений

Я, наверное, не совсем правильно объяснил. Я имел ввиду, если хоть одно слово из переменной "А" совпадет в переменной "Б" - тогда оно должно отобразиться в переменной "С".

Про регулярные выражения разобрался! Вроде все получается! Спасибо!
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 244
Благодарностей
1 820
Баллы
113
Прикрепил к данному сообщению шаблон. Постарался подробно прокомментировать каждый экшен.

Лучше протестировать на других данных, т.к. это решение я создавал только на основе того, что было указано в первом сообщении.
 

Вложения

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Поторопился с выводами. Нифига не получилось у меня с рег. выражениями. То есть, с одними значениями срабатывает, с другими нет...
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 244
Благодарностей
1 820
Баллы
113
Поторопился с выводами. Нифига не получилось у меня с рег. выражениями. То есть, с одними значениями срабатывает, с другими нет...
Вы пробовали решение, которое я скидывал на одно сообщение выше? Если оно не работает, то скиньте данные на которых мой шаблон спотыкается.
 
  • Спасибо
Реакции: Эдгар

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Прикрепил к данному сообщению шаблон. Постарался подробно прокомментировать каждый экшен.

Лучше протестировать на других данных, т.к. это решение я создавал только на основе того, что было указано в первом сообщении.
Вроде ваш вариант срабатывает, но я еще его на разных значениях не проверил.
 

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Вы пробовали решение, которое я скидывал на одно сообщение выше? Если оно не работает, то скиньте данные на которых мой шаблон спотыкается.
Проверил на разных значениях - все срабатывает! От души благодарю вас!!!
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
C#:
char[] separator = new[] {' ',',',':','?','!','.'};// символы-разделители текста
string[] a_words = project.Variables["A"].Value.Split(separator, StringSplitOptions.RemoveEmptyEntries);//собираем в массив слова из переменной A
string[] b_words = project.Variables["B"].Value.Split(separator, StringSplitOptions.RemoveEmptyEntries);//собираем в массив слова из переменной B
foreach(string a_word in a_words){//цикл по массиву слов из переменной А
    if(b_words.Contains(a_word)){//если массиве слов строки B найдено совпадение
        project.Variables["C"].Value = a_word;//записываем совпадение в переменную С
        break;// Выходим из цикла
}}
Подставите свои переменные. При первом найденном совпадении в переменных A и B в переменную C запишется это совпадение
 
Последнее редактирование:

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
C#:
char separator = new[] {' ',',',':','?','!','.'};// символы-разделители текста
string[] a_words = project.Variables["A"].Value.Split(separator, StringSplitOptions.RemoveEmptyEntries);//собираем в массив слова из переменной A
string[] b_words = project.Variables["B"].Value.Split(separator, StringSplitOptions.RemoveEmptyEntries);//собираем в массив слова из переменной B
foreach(string a_word in a_words){//цикл по массиву слов из переменной А
    if(b_words.Contains(a_word)){//если массиве слов строки B найдено совпадение
        project.Variables["C"].Value = a_word;//записываем совпадение в переменную С
        break;// Выходим из цикла
}}
Подставите свои переменные. При первом найденном совпадении в переменных A и B в переменную C запишется это совпадение

Это шутка какая-то? Когда я вставил этот код в кубик, у меня весь проект перестал работать, пока я не удалил этот кубик.
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Это шутка какая-то? Когда я вставил этот код в кубик, у меня весь проект перестал работать, пока я не удалил этот кубик.
Признаю, моя ошибка. Поправил код в посте выше. У меня мейкер занят сейчас и я прямо тут творю.
 

kolina

Client
Регистрация
05.10.2019
Сообщения
165
Благодарностей
47
Баллы
28
Есть переменная с значением: 2|||capa-rollputz-flex-gotovaya-dispersionnaya-akrilovaya-shtukaturka-dlya-naruzhnyh-rabot-25kg

Осуществляю по ней поиск: Обработка текста - Regexp (21vek.by|deal.by|socket.by|onliner.by|dom.by|pulscen.by|yandex.by|henkel-dam.com|shop.by|.ru|kufar.by|ysk.by|otzovik.com|.lv|.org|.ua|.kz|vk.com)

Результат: aru( не могу понять должна быть неудача)
Шаблон прикрепил

Не могу понять где я туплю
 

Вложения

Последнее редактирование:

kolina

Client
Регистрация
05.10.2019
Сообщения
165
Благодарностей
47
Баллы
28
Ошибка.png
Сопоставив все возможные варианты, пришел к выводу, скорее всего спец символы, нужно экранировать. Заэкранировав в регулярке точки, шаблон выполняется так как нужно. Или я ошибаюсь?
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 244
Благодарностей
1 820
Баллы
113
Посмотреть вложение 72108
Сопоставив все возможные варианты, пришел к выводу, скорее всего спец символы, нужно экранировать. Заэкранировав в регулярке точки, шаблон выполняется так как нужно. Или я ошибаюсь?
Да, специальные символы нужно экранировать.

Точка в regex означает "любой символ". Если нужна именно точка, то так - \.
 
  • Спасибо
Реакции: kolina

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