Привести номера телефонов РФ в списке к единому формату и код для сравнения списков и возврата совпадений

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8
Добрый день.
В каждой строке списка записаны номера телефонов РФ. У номеров телефонов два различных формата: +79051234567 или 89051234567
Необходимо каждый номер телефона привести к единому формату 79051234567
Первое что приходит в голову, это брать строку и через кубик "обработка текста- замена" производить замену используя регулярное выражение. Результат писать во второй список. И так обрабатывать каждую строку, пока они не закончатся.
Но строк может быть сотни. Является ли это оптимальным вариантом решения моей задачи?

второй вопрос:
после приведения номеров к единому формату, необходимо сделать сравнение обработанных номеров, находящихся в "spisok1" с номерами находящимися в "spisok2". Все найденные совпадения необходимо вернуть в ""spisok3"
Тут так же приходит в голову брать каждую строчку и через кубик проверять содержание в другом списке. Но думаю, что это возможно делать через C# экшен. Подскажите пожалуйста код для реализации моей задачи. Спасибо.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 719
Баллы
113

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Необходимо каждый номер телефона привести к единому формату 79051234567
Можно с помощью действия Обработка текста-Замена (по регулярному выражению). Сама регулярка - (?m)^(\+7|8)
85336

после приведения номеров к единому формату, необходимо сделать сравнение обработанных номеров, находящихся в "spisok1" с номерами находящимися в "spisok2"
Тут тоже можно воспользоваться регулярными выражениями. Приложил пример в котором элементы из Списка2 ищутся в Списке1. Все строки Списка2 объединяются с разделителем |, в итоге получается это - 753047574285041|757685988503935|717005369642262|719685305317610|741196122755831. После чего эта строка используется как регулярное выражение (только надо скобки вокруг добавить) для поиска.
 

Вложения

  • Спасибо
Реакции: fazan и one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
И так обрабатывать каждую строку, пока они не закончатся.
Но строк может быть сотни. Является ли это оптимальным вариантом решения моей задачи?
Сотни строк - это речь ни очем. о десятка миллиннох если бы была речь, то тут уже надо будет подумать. А так, вариант для решения поставленной задачи вполне себе корректен.

второй вопрос:
после приведения номеров к единому формату, необходимо сделать сравнение обработанных номеров, находящихся в "spisok1" с номерами находящимися в "spisok2". Все найденные совпадения необходимо вернуть в ""spisok3"
Тут так же приходит в голову брать каждую строчку и через кубик проверять содержание в другом списке. Но думаю, что это возможно делать через C# экшен. Подскажите пожалуйста код для реализации моей задачи. Спасибо.
Если spisok1 исходный для первой задачи, то что Вы собираетесь в нем сравнивать если из этого списка изменили формат номеров и результат положили в spisok2? Смысл где?
 

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8
Если spisok1 исходный для первой задачи, то что Вы собираетесь в нем сравнивать если из этого списка изменили формат номеров и результат положили в spisok2? Смысл где?
Формат я меняю для дальнейшего сравнения номеров. Так как в spisok2 будут лежать номера в формате "79051234567 " Поэтому для корректного сравнения, сначала мне нужно привести номера в "spisok1"к правильному формату. А затем делать сравнение "spisok1" со "spisok2". Сравнение я делаю, с целью найти совпадения, чтобы дальше уже работать с этими совпадениями.

Всем спасибо за подсказки.
 

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8
Можно с помощью действия Обработка текста-Замена (по регулярному выражению). Сама регулярка - (?m)^(\+7|8)


Тут тоже можно воспользоваться регулярными выражениями. Приложил пример в котором элементы из Списка2 ищутся в Списке1. Все строки Списка2 объединяются с разделителем |, в итоге получается это - 753047574285041|757685988503935|717005369642262|719685305317610|741196122755831. После чего эта строка используется как регулярное выражение (только надо скобки вокруг добавить) для поиска.
Спасибо! Воспроизвел Вашу логику у себя в проекте.
 

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