2015-01-10 3 views
2

Я ищу решение в C# для извлечения информации о почтовом индексе с адреса.получение почтового индекса с адресов

Почтовые индексы следующих стран

Canada,US,Germany,UK,Turkey,France,Pakistan,India,Italy. 

Адрес может быть что-то вроде этих

188 pleasant street, new minas, Nova Scotia b2p 6r6, Canada. 

или 109 А, блок 3, DHA, Карачи 75600, Пакистан.

что я хочу: я хочу извлечь любые буквенно-цифровые символы, которые находятся рядом с городом или названием страны. Но с трудом создаю для него регулярное выражение

+2

Нам будет намного легче помочь вам, если вы покажете свой код, какие есть входы, какие вы ожидаете, и что происходит не так. – adv12

+1

В отличие от форумов, мы не используем «Спасибо», или «Любая помощь оценена», или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts). –

+0

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

ответ

-2

Я считаю, что разумно предположить, что вы принимаете общее правило в адресе, в котором страна является последним, а также городом или штатом до этого, поэтому почтовый индекс может быть помещен между городом или государством и страной, а также вы заявили в примере «» используется в качестве разделителя, поэтому он может быть следующим:

private string GetPostCode(string address) 
    { 
     string result = string.Empty; 

     string[] list = address.Split(','); 
     list.Reverse(); 
     foreach (var item in list) 
     { 
      // if item contains numeric postcode 
      Regex re = new Regex(@"\d+"); 
      Match m = re.Match(item); 
      result = m.Value; 
      if (!string.IsNullOrEmpty(result)) 
       break; 
     } 

     return result; 
    } 

Я надеюсь, что это было бы полезно.

+0

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

+0

@KaushikKishore: Код обновлен. но все же я не пишу точного кода, я просто хотел дать предложение. спасибо за комментарий. –

-1

Это довольно открытая задача. Вы должны следовать определенному формату. Потому что, что произойдет, если в адресе будет две числовые строки (например, случай, когда улица - это число). Таким образом, возможны два варианта:

  • Адрес всегда в определенном формате, и вы знаете, фактический формат
  • почтового индекса всегда заданной длины

В обоих случаях регулярные выражения приведет вас к решению. - В первом примере, предполагая, что почтовый индекс находится в данном порядке (скажем, «6r6» в вашем исходном примере), вы можете использовать следующий шаблон регулярного выражения: «(\ S +) \,? \ W + $" - Для второго случая, предполагая, что почтовый индекс представляет собой число из 5 + цифр, которое появляется после первого «,», следующий шаблон может быть использован для его извлечения: «(,. *) + (\ D {5 })». Вторая группа будет почтовым индексом в матче.

Вот код, который вы можете использовать: общественности статической строки GetSingleMatch (строка адреса, строка шаблон, внутр группа = 0) { вернуть новый Regex (рисунок, RegexOptions.IgnoreCase) .Match (адрес) .Groups [ группа] .Value; }

Необязательный параметр «группа» указывает группу регулярных выражений, которая будет содержать почтовый индекс.

 Смежные вопросы

  • Нет связанных вопросов^_^