Проверка на наличие в тексте и подстановка соответствующей расшифровки

hago73

Client
Регистрация
07.09.2012
Сообщения
59
Благодарностей
21
Баллы
8
Здравствуйте.
Столкнулся с такой проблемой при получении названий товаров из файла, после названия идет --- и от нуля до 4 сокращений, например
Баклажан Вороной --- Ор. А П Пч Блюда стран мира

Мне нужно в отдельную ячейку записать расшифровки для "Ор. А", "П", "Пч" и отдельно еще и добавить "Блюда стран мира"
Первоначально думал разбить по словам и использовать Switch, но так не работает.
Есть долгий вариант: сделать regex для каждого сокращения после --- с его последующим удалением из строки, добавлением в отдельную переменную и ей уже присвоить расшифровку. Например, ищем "Ор. А" и ей подставляем "оригинатор ООО "Агрофирма АЭЛИТА"", но тут проблема: сокращений штук 30, и есть "®"
Тогда выйдет кубиков 60, чтобы все прогнать.

Вопрос: может есть способ поэлегантнее?
 

Rimen

Client
Регистрация
28.10.2019
Сообщения
405
Благодарностей
237
Баллы
43
Не так чтобы элегантней, но решает проблему
Делаешь табличку с заменами ‘что’ на ‘что’

И дальше переменную циклом по табличке. Если совпад — замена на значение из соседнего столбца.
 
  • Спасибо
Реакции: hago73

Viking01

Client
Регистрация
19.08.2017
Сообщения
228
Благодарностей
151
Баллы
43
Здравствуйте.
Столкнулся с такой проблемой при получении названий товаров из файла, после названия идет --- и от нуля до 4 сокращений, например
Баклажан Вороной --- Ор. А П Пч Блюда стран мира

Мне нужно в отдельную ячейку записать расшифровки для "Ор. А", "П", "Пч" и отдельно еще и добавить "Блюда стран мира"
Первоначально думал разбить по словам и использовать Switch, но так не работает.
Есть долгий вариант: сделать regex для каждого сокращения после --- с его последующим удалением из строки, добавлением в отдельную переменную и ей уже присвоить расшифровку. Например, ищем "Ор. А" и ей подставляем "оригинатор ООО "Агрофирма АЭЛИТА"", но тут проблема: сокращений штук 30, и есть "®"
Тогда выйдет кубиков 60, чтобы все прогнать.

Вопрос: может есть способ поэлегантнее?
да, сделать одним кубиком с кодом - загрузить таблицу сокращений и в цикле вызывать метод .Repalce()
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
я видел ту таблич
да, сделать одним кубиком с кодом - загрузить таблицу сокращений и в цикле вызывать метод .Repalce()
и реплейс заменит все буквы П в тексте.
Там логика сложнее. Там и скаждой нужно сделать регулярку на основе границ слова, и правильно сортировать, чтобы сначала замена шла по самым длинным
 
  • Спасибо
Реакции: hago73

hago73

Client
Регистрация
07.09.2012
Сообщения
59
Благодарностей
21
Баллы
8
Не так чтобы элегантней, но решает проблему
Делаешь табличку с заменами ‘что’ на ‘что’

И дальше переменную циклом по табличке. Если совпад — замена на значение из соседнего столбца.
Спасибо огромное. Сильно помогло сократить код.
я видел ту таблич

и реплейс заменит все буквы П в тексте.
Там логика сложнее. Там и скаждой нужно сделать регулярку на основе границ слова, и правильно сортировать, чтобы сначала замена шла по самым длинным
Расставил вручную все сокращения от более сложных к более простым, чтобы не находило буквы "П" в "Пч" и т.д. и сделал тем способом, что предложил Rimen
 
  • Спасибо
Реакции: doc

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