Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения 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