Вход | Регистрация
 

Функция для приведения номера или выделения номера телефона из текста к +7xxxyyyzzqq

Функция для приведения номера или выделения номера телефона из текста к +7xxxyyyzzqq
Я
   ИС-2
 
14.07.21 - 09:33
Номер телефона в базе может быть в любом виде - и со скобками и с пробелами и с "-". Могут написать какую-то свою информацию. Например, Вася 8912 123-4560

Есть ли универсальная функция, чтобы выделить номер из текста ?
   vicof
 
1 - 14.07.21 - 09:34
регулярные выражения наше всё
   Йохохо
 
2 - 14.07.21 - 09:38
как добавить +7 к последним 10 цифрам, скандалы интриги расследования
   NorthWind
 
3 - 14.07.21 - 09:39
(2) а если кто-то напишет 
+7915ххххххх Вася
:) ?
   Closed
 
4 - 14.07.21 - 09:45
Или так: Вася 89l2 l23-456O
   Garykom
 
5 - 14.07.21 - 09:56
(0) 1. Очистка данных
2. Приведение/разбор по типовым шаблонам
   Garykom
 
6 - 14.07.21 - 10:00
В смысле находишь цифры в тексте с разделителями типа " ", "-", "(", ")" вытаскиваешь удаляя разделители
Можно просто все не цифры заменить на " ", далее несколько пробелов приводим к одном
И затем уже по шаблону пытаемся натянуть ну типа там один номер какого вида (кроме мобильных причем код страны он как бы разный есть еще городские/международные номера с кодом города разной длины)
Или там несколько номеров подряд

Короче классификация/кластеризация (группируем похожие) и затем каждую группу по одному правилу обрабатываем
Потихоньку все группы обработаны будут кодом
   BeerHelpsMeWin
 
7 - 14.07.21 - 10:03
А потом в базе появляется клиент из Украины или Прибалтики...
   Йохохо
 
8 - 14.07.21 - 10:04
(3) только если контерстрайкер "+7915ххххххх |/а59"
   Sapiens_bru
 
9 - 14.07.21 - 10:14
По простому вот так:

НомерЧисла = СтрСоединить(СтрРазделить(Номер,СтрСоединить(СтрРазделить(Номер,"1234567890"))));

Потом проверять что получилось 10-11 цифр и расставлять нужные пробелы/скобки

Но огребешь со всякими добавочными
   ИС-2
 
10 - 14.07.21 - 11:01
(8) что за контейнер стракер ? Что за технология
   RomaH
 
11 - 14.07.21 - 14:37
&НаКлиенте
Процедура НомерТелефонаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
    
    //лТекст = СтрЗаменить(Текст," ","");

    
    ОтформатированныйТекст = "";
    
    Для Ш = 1 По СтрДлина(Текст) Цикл
        
        Цифра = Сред(Текст,Ш,1);
        
        Если СтрНайти("0123456789",Цифра) Тогда
            ОтформатированныйТекст = ОтформатированныйТекст + Цифра;    
        КонецЕсли;
        
    КонецЦикла;
    
    ОтформатированныйТекст = Лев(ОтформатированныйТекст + "##########",15);

    
    ПерваяЦифра = Лев(ОтформатированныйТекст,1);
    
    Если ПерваяЦифра = "7" ИЛИ ПерваяЦифра = "8" Тогда
        ОтформатированныйТекст = Сред(ОтформатированныйТекст,2);    
    КонецЕсли;
    
    КодыОператоров = "900 901 902 903 904 905 906 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 936 937 938 939 941 950 951 952 953 954 955 956 958 960 961 962 963 964 965 966 967 968 969 970 971 977 978 980 981 982 983 984 985 986 987 988 989 991 992 993 994 995 996 997 999";
    
    КодОператора = Лев(ОтформатированныйТекст,3);
    
    Если СтрНайти(КодыОператоров,КодОператора) Тогда
        КодОператора = Лев(КодОператора + "###",3);

    Иначе
        КодОператора = "###";

    КонецЕсли;

    Группа2 = Сред(ОтформатированныйТекст,4,3);    
    
    Группа3 = Сред(ОтформатированныйТекст,7,2);
    
    Группа4 = Сред(ОтформатированныйТекст,9,2);
    
    ОтформатированныйНомерТелефона = "+7 " + КодОператора + " " + Группа2 + " " + Группа3 + " " + Группа4;
    
    НомерТелефонаПациента = КодОператора + Группа2 + Группа3 + Группа4; 
    
    Если СтрНайти(ОтформатированныйНомерТелефона,"#") Тогда

        Элементы.СтраницыОтформатированныйНомерТелефона.ТекущаяСтраница = Элементы.СтраницаОтформатированныйНомерТелефонаНет;
        Элементы.СтраницыПроверкаНомера.ТекущаяСтраница = Элементы.СтраницаПроверкаНомераНеКорректный;
    Иначе 
        
        Элементы.СтраницыОтформатированныйНомерТелефона.ТекущаяСтраница = Элементы.СтраницаОтформатированныйНомерТелефонаОк;
        Элементы.СтраницыПроверкаНомера.ТекущаяСтраница = Элементы.СтраницаПроверкаНомераКорректный;
        
        ПодключитьОбработчикОжидания("ОтправитьНомерНаОжиданиеПодтверждения",0.1 + 5 * КоличествоЗапросовНомера,Истина);
        
        КоличествоЗапросовНомера = КоличествоЗапросовНомера + 1;
        
    КонецЕсли;
    
    КьюАрКод = "";
    
    Объект.НомерТелефонаДляПодтверждения = "ожидаем ...";
   RomaH
 
12 - 14.07.21 - 14:39
dkb.yar.ru/pazientu/test.html
   uno-group
 
13 - 14.07.21 - 15:12
(0) А там точно только Вася 8912 123-4560. И нет ТД Рога и копыта 2000-89121234560
   uno-group
 
14 - 14.07.21 - 15:13
ИЛИ Вася 89121234560-89091234567

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.