Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 10.01.2018, 17:33   #1
Aikyaira
Новичок
 
Регистрация: 10.01.2018
Сообщений: 1
Репутация: 10
По умолчанию Регулярные выражения

Добрый день, уважаемые форумчане!
Помогите, пожалуйста, решить проблему:
есть строка вида
143301, обл. Московская, г. Дмитров, ул. Сиреневая, д. 50
или
обл. Московская, г. Дмитров, ул. Сиреневая, д. 50
Ее нужно привести к такому виду:
Дмитров Сиреневая 50.
При этом вместо Московской области может быть любая другая, либо край, либо республика. Так же есть вероятность, что обозначения субъекта РФ впринципе не будет, что-то вроде "125009, г. Москва, ул. Тверская, д. 4". Вместо улицы может быть переулок, проезд, тупик, бульвар и т.д. Вместо города, соответственно, может быть любой другой, не факт, что город, но населенный пункт(г. , п. , с. , д. , etc).
Понимаю: задача может быть решена регулярными выражениями.
Не понимаю: регулярных выражений. Сижу с ними уже недели две. Мозг упорно отказывается вникнуть в материал.
Очень прошу, помогите! Голова скоро лопнет
Aikyaira вне форума   Ответить с цитированием
Старый 10.01.2018, 18:59   #2
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,616
Репутация: 3613
По умолчанию

Задача не такая уж и тривиальная, если набор данных может быть в сильно разном виде. Через регулярки я бы это не делал.
Если запятые везде, то разбиваем строку на элементы через string.Split
в итоге получим набор строк:
143301
обл. Московская
г. Дмитров
ул. Сиреневая
д. 50
каждую строку уже отдельно анализировать.
первая строка у нас индекс, регион или город.
int.TryParse("143301") - отлично. это почтовый индекс (можно еще на длину проверить и т.п.). заносим в переменную, если нужен.
вторая строка у нас или регион или город.
ищем в ней слово область, обл., край, республика,... Нашлось? Значит тут область. обл. в начале строки - значит удаляем первую часть, обл. в конце строки - удаляем хвост. потому что может быть Московская область или обл. Московская.
на третьей строке у нас уже остаётся надежда, что это населённый пункт и ищем город, г., п., пгт.,...
в зависимости от исходной задачи и требований я бы копал в сторону готовых библиотек (для точности чтобы умели ФИАС/КЛАДР использовать) и всяких API от яндекс/гугл карт (что-то для парсинга адресов у них было вроде).
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения ololo-schoolboy PHP 2 15.05.2011 13:03
Регулярные выражения Vanta11a Помощь студентам 2 05.05.2011 12:44
Регулярные выражения papos Помощь студентам 0 26.04.2011 20:12
регулярные выражения vvsh PHP 3 22.04.2011 17:09


08:52.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru