2016-02-11 44 views
0

你好老鄉程序員:)我需要我的代碼幫助用C#爲僅在地址字符串例如提取城市名稱和英國郵編那些大寫:C#獲取城市和郵編從地址字符串

輸入

15 Arnott Blk C Quadrant MOTHERWELL ML1 3TQ North Lanarkshire 
Flat 3 2A Klea Avenue LONDON SW4 9JA London 
12 Parish Close Dawley TELFORD TF4 3ER Shropshire 
76 Admiralty Close WEST DRAYTON UB7 9NJ West Drayton 
56 Glenburn Avenue MOTHERWELL ML1 5EF North Lanarkshire 
25 Thirleby Road EDGWARE HA8 0HF Edgware 
21 Prideaux Place Friars Place Lane LONDON W3 7AS London 
1 Arnold Road STAINES-UPON-THAMES TW18 1LY Surrey 
6 A Queen Street BRIDGWATER TA6 3DA Somerset Flat 
8-B Lynn Court Mitcham Lane LONDON SW16 6LL London 
35 Weirside Gardens WEST DRAYTON UB7 7TL 
473 Rochfords Gardens SLOUGH SL2 5XF Berkshire 
155 Strawberry Fields ADDLESTONE KT15 1FJ Surrey 

輸出

MOTHERWELL ML1 3TQ 
LONDON SW4 9JA 
TELEFORD TF4 3ER 
WEST DRAYTON UB79NJ 
MOTHERWELL ML1 5EF 
EDGWARE HA8 0HF 
LONDON W3 7AS 
STAINE-UPON-THAMES TA6 3DA 
LONDON SW16 6LL 
WEST DRAYTON UB7 7TL 
SLOUGH SL2 5XF 
ADDLESTONE KT15 1FJ 

他們修復大寫我需要提取。任何幫助或提示,非常感謝謝謝。

+0

此數據是否在列中?即街道和城市之間的標籤? –

+0

請更具體地說明爲什麼選擇這些列。用空格分隔時,第四,第五和第六項簡單嗎?如果是這樣,那麼與大寫無關。如果不是,那麼你能解釋爲什麼'15','C'和'8-B'不包含在輸出中嗎? – Rob

+0

選中此:[正則表達式來限制大寫](http://stackoverflow.com/questions/17861316/regex-to-restrict-uppercase-only),因爲你只是在尋找大寫字母。 –

回答

2
using System.Text.RegularExpressions; 

string FindCityAndCode(string input) 
{ 
    Regex regCode = new RegEx("([-A-Z ]{2,} [A-Z0-9]{2,} [A-Z0-9]{2,}) "); 

    var m = regCode.Match(input); 

    if (m.Success) 
     return m.Groups[1].Value; 

    return string.Empty; 
} 

正則表達式被設計爲匹配一系列大寫AZ和間隔的,後跟一個空格,那麼至少兩個字符AZ或0-9另一空間,然後另一個兩個或多個字符AZ或0-9後跟另一個空格。

如果表達式匹配,我們將返回它,否則我們返回一個空字符串...

我不是太熟悉英國的郵政編碼,所以{2,}可能需要進一步限定是可能{2,3}到說2或3個字符之間...

0

嗨@Ubercoder我試過你的代碼,雖然一些郵政編碼沒有驗證,因此不產生任何輸出或不完整我有我的UKPost正則驗證碼,如果你可以將它合併到你的代碼它可能大量提取大寫城市和郵政編碼

public static bool IsPostCode(string postcode) 
    { 
    return (
      Regex.IsMatch(postcode, "(^[A-PR-UWYZa-pr-uwyz][0-9][ ]*[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}$)") || 
      Regex.IsMatch(postcode, "(^[A-PR-UWYZa-pr-uwyz][0-9][0-9][ ]*[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}$)") || 
      Regex.IsMatch(postcode, "(^[A-PR-UWYZa-pr-uwyz][A-HK-Ya-hk-y][0-9][ ]*[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}$)") || 
      Regex.IsMatch(postcode, "(^[A-PR-UWYZa-pr-uwyz][A-HK-Ya-hk-y][0-9][0-9][ ]*[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}$)") || 
      Regex.IsMatch(postcode, "(^[A-PR-UWYZa-pr-uwyz][0-9][A-HJKS-UWa-hjks-uw][ ]*[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}$)") || 
      Regex.IsMatch(postcode, "(^[A-PR-UWYZa-pr-uwyz][A-HK-Ya-hk-y][0-9][A-Za-z][ ]*[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}$)") || 
      Regex.IsMatch(postcode, "(^[Gg][Ii][Rr][]*0[Aa][Aa]$)") 
      ); 
    } 
相關問題