Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Вниз

Думаю писать StringToТелефоны   Найти похожие ветки 

 
ВладОшин ©   (2014-10-15 11:25) [0]

Проще так, наверное..

Как это сейчас:
Есть сайт, там есть мемка "контакты"
пишут туда всякую ересь, т.к. поле текстовое

простые случаи
xxxxxxxxxx
8xxxxxxxxx

и посложнее
+7xxxxxxxxxx с 8 до 17
+7 xxx-xxx-xx-xx, 8xxx-xxx-xx-xx
xxxxxxxxxx. xxxxxxxxxx
xxxxxxxxxx-xxxxxxxxxx
xxxxxxxxxx---xxxxxxxxxx
xxxxxxxxxx xxxxxxxxxx
xxxxxxxxxx/xxxxxxxxxx
xxx.xxx.xxxx, 8xxx.xxx.xx.xx
xxxxxxxxxx или xxxxxxxxxx
8xxxxxxxxxx в России. xxx xxx xxxx в Таджикистане
8xxxxxxxxxx спросить Олега, если недоступен - 8xxxxxxxxxx, Игорь
(xxx xxx xx xx) (xxx xxx xx xx)
но может быть и мыло xxx@ccc.ru (или бот что-то написал) -  что не интересует

Все это падает в табличку, потом оператор смотрит в другом ПО, на форме у него есть TEdit, куда он забивает номер телефона и звонит, если юзер просил позвонить

Как это вижу:
TEdit становится комбо, с возможностью печати, как в эдит, но заполненный по возможности, вычлененными телефонами из текста..

--------

Куда посмотреть?

Как человек понимает, что это телефон..
мы же как-то понимаем.. Как мы понимаем, что тут два телефона  - один через пробелы, второй через тире, а не мусор..

зы
задача не требует 100% охвата
процентов 80 уже хорошо
а если 90 % да x300 человек - столько времени сократится - что может премию дадут :)
обещаю пропить за здоровье подмогнувшего идеей :)


 
brother ©   (2014-10-15 11:28) [1]

те нужен парсер строк?


 
ВладОшин ©   (2014-10-15 11:34) [2]

да

зануда_ON
описал подробно(и с претензией на юмор), предвосхищая вопросы, зачем/что/где/когда и дабы поддержать легкость беседы
зануда_OFF


 
DVM ©   (2014-10-15 11:40) [3]


> Как человек понимает, что это телефон..
> мы же как-то понимаем.. Как мы понимаем, что тут два телефона
>  - один через пробелы, второй через тире, а не мусор..

Это непростая задача в общем случае. Аналогичная ситуация с адресами  и именами.
Но в 99% случаев достаточно ограничить юзерам ввод в поле телефон, чем то подобным:


       /// <summary>
       /// MSISDN
       /// Допустимые форматы:
       /// +7-916-777-88-00  
       /// +7-916-777-8800  
       /// +47-916-777-88-00  
       /// +47-916-7778800  
       /// +47(916)777-88-00  
       /// +47(916)777-8800  
       /// +47(916)7778800  
       /// (916)777-88-00  
       /// (916)777-8800  
       /// (916)777-8-800  
       /// (916)7778800  
       /// 9167778800  
       /// 916-7778800  
       /// 916-777-88-00  
       /// 916-777-8-800  
       /// </summary>
       [Required(ErrorMessage = "Вы не указали MSISDN")]
       [RegularExpression(@"(^\+\d{1,2})?((\(\d{3}\))|(\-?\d{3}\-)|(\d{3}))((\d{3}\-\d{4})|(\d{3}\-\d\d\-\d\d)|(\d{7})|(\d{3}\-\d\-\d{3}))$", ErrorMessage = "Неправильно указан MSISDN")]
       [DataType(DataType.PhoneNumber)]
       [Display(Name = "MSISDN", Prompt = "Введите MSISDN", Description = "Например: +7(123)456-78-90")]
       public string Msisdn { get; set; }


 
DVM ©   (2014-10-15 11:42) [4]

потом просто отбрасываешь символы "(","-" если требуется.


 
ВладОшин ©   (2014-10-15 12:00) [5]

> Это непростая задача в общем случае.
согласен

> ограничить юзерам ввод в поле телефон
согласен, самое простое, но начальство отклонило
Клиентоориентированность
Если в html ввести под каждый вид связи свое поле - это будет проблемка для юзера.
Ему удобнее одно поле, записал абы как(там и мыло может, и скайп и что-то еще)

Фишка у нас именно в том, что обрабатывают люди. Вопросы разные, русский письменный юзера - тоже. За это и платят заказчики.

Но максимум автомата - желательно


 
brother ©   (2014-10-15 12:03) [6]

ответ не очевиден?
регулярки для каждого валидного шаблона номеров, остальное в лог на анализ, возможно еще какие регулярки сделаешь. ну, а осталное - мусор)


 
brother ©   (2014-10-15 12:04) [7]

ну и регулярки на очевидно не валидные строки, например *@*.* содержащие...


 
DVM ©   (2014-10-15 12:07) [8]


> ВладОшин ©   (15.10.14 12:00) [5]


> Если в html ввести под каждый вид связи свое поле - это
> будет проблемка для юзера.

Почему проблемка? Какая пользователю разница в какое поле писать свой телефон или почту. На мой взгляд даже для него менее удобно, т.к. сразу возникают вопросы, как писать, в каком формате, и т.д. Если же есть поле с валидацией на лету + подсказка в каком виде заполнять данное поле рядом с ним, то имхо для всех это проще.

Даже Яндекс или Гугл при всех своих возможностях по анализу текста никогда не используют ни в одной из форм такой метод, какой хочет ваше начальство. Это ли не аргумент?


 
brother ©   (2014-10-15 12:08) [9]

да и еще, перед парингом убирать НЕ числовые символы, вместо них ставить пробел например...


 
DVM ©   (2014-10-15 12:10) [10]


> brother ©   (15.10.14 12:03) [6]


> регулярки для каждого валидного шаблона номеров

Регулярки для того, что он хочет (и телефон во всех вариантах и скайп и e-mail и голубиная почта) будут страшными.


 
ВладОшин ©   (2014-10-15 12:34) [11]


> Регулярки для того, что он хочет (и телефон во всех вариантах
> и скайп и e-mail и голубиная почта) будут страшными.

да вот и да. Потом не поймешь ничего

хотя, в принципе, покрывается 80% - даже простое исключение пробелов и взятие 10 цифр справа -  т.к.  в основном и пишут просто, все подряд. Или через бробелы.

Но хотелось бы больше, остальные случаи охватить тоже, максимально


> Даже Яндекс или Гугл при всех своих возможностях по анализу
> текста

да им пишут сотни миллионов, поди. После отсева останутся миллионы. Никаких людей не напасешься перепроверять.

А нам - тысячи, после останутся пару сотен - люди вполне разберут. Они и тысячи сейчас разбирают. К тому же это надо заказчика просить свой сайт менять(сайт не наш)
Вот аргумент начальства.  Сделать все возможное, остальное просмотрят люди.


> brother ©   (15.10.14 12:08) [9]
> да и еще, перед парингом убирать НЕ числовые символы

трудно вижу 2 телефона
96-05-66-88-99 96-05-66-88-97

убирать НЕ числовые символы
96 05 66 88 99 96 05 66 88 97
если сложить все и по длине понять, что не может быть такой длинный номер,
а если разрезать пополам, то может
- то да :)

не то..


 
ВладОшин ©   (2014-10-15 12:42) [12]

Вот что думаю, такая.. несформулированная .. мысль летает

заводим табличку, пишем туда шаблоны. А именно:
Когда оператор,
- понимает глазами и руками вбивает номер,
нажимает звонить.

Мы пишем номер(введеный оператором) и все позиции цифр с символами между ними
из строки в таблицу. Получаем шаблон.

Копим шаблоны, пытаемся применить шаблон к новым строкам.

Если  шаблон применился, и оператор согласился с результатом - увеличиваем вес шаблона
(т.е. - , шаблоны применяются по приоритету весов.. так получается)

смысл - чем больше писем разобрано, тем больше шаблонов, тем больше  должен понимать

вот как-то так  - чем больше прогу юзают, тем "умнее" становится


 
DVM ©   (2014-10-15 12:57) [13]


> ВладОшин ©   (15.10.14 12:42) [12]

В принципе задача решаема с помощью конечных автоматов. Это собственно те же регулярки, но в виде кода. Состояний правда будет много, но зато хоть наглядно.


 
brother ©   (2014-10-15 13:12) [14]

[11] ну, ясно понятно, что нектороые спец символы нужно оставить )


 
Дмитрий Белькевич ©   (2014-10-15 21:39) [15]

>Как человек понимает, что это телефон..

мне кажется, стоит искать коды в начале номеров и/или какие-то общие цифры:

>96-05-66-88-99 96-05-66-88-97

>пишут туда всякую ересь, т.к. поле текстовое

ограничить несколькими (десятком) форматов принципиально невозможно?


 
ВладОшин ©   (2014-10-16 10:06) [16]

да не знай..
что-то решают, посмотрим к чему придут. Пока отложили
дня через 2, к понедельнику, придет распоряжение И
или все проще будет, телефон будет отдельной строкой, заданного формата  
или продолжим  :)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.049 c
15-1412713803
Юрий
2014-10-08 00:30
2015.09.10
С днем рождения ! 8 октября 2014 среда


3-1304660774
dolmat
2011-05-06 09:46
2015.09.10
Совместимы ли Interbase 2009 и 7.01


2-1392643424
Дмитрий СС
2014-02-17 17:23
2015.09.10
Редактор очень широких текстов.


2-1396092417
Drowsy_
2014-03-29 15:26
2015.09.10
В отчёте TQuickRep используются только TQRSubDetail и TQRLabel.


15-1419888602
Юрий
2014-12-30 00:30
2015.09.10
С днем рождения ! 30 декабря 2014 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский