2015-01-10 97 views
2

我正在尋找一個解決方案,在c#中從地址提取郵政編碼信息。從地址提取郵政編碼

以下國家

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

地址的郵政編碼可以像這些

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

或 109 A,塊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(串地址,字符串模式,INT組= 0) { 返回新的正則表達式(圖案,RegexOptions.IgnoreCase).Match(地址).Groups [基]。價值; }

「基團」可選參數,指示其中將包含郵政編碼的正則表達式組。

相關問題