2014-10-02 68 views
0

需要什麼:地址信息

對於輸入:

Somestreet 
Somestreet 12  
Somestreet 12 A  
Somestreet 12-14 

輸出:

Somestreet 

Somestreet | 12 

Somestreet | 12 | A 

Somestreet | 12 | - | 14 

其中|是分隔符

我已完成:

var pattern = @"(\d+)"; 
var regex = new Regex(pattern, RegexOptions.IgnoreCase); 

var matchCollection = regex.Split(input); 

var street = matchCollection[0]; 

if (matchCollection.Length > 1) 
{ 
    houseNumber = matchCollection[1]; 
} 

if (matchCollection.Length > 2) 
{ 
    houseNumberLetter = matchCollection[2]; 
} 

對於前三種情況,但對於四號不適用。

你能幫助我嗎?

+0

你想在字符串之間換行嗎?字母「A」後面是否有空格? – 2014-10-02 11:55:31

+0

@AvinashRaj我想分割很多部分的信息。 1.對於街道名稱,2.對於門牌號碼,3.對於帶有額外字母的門牌號(如果給出)。但是如果以「Streetname 12-14」的形式輸入,我在字母A之後只讀了Streetname 12和 - – MikroDel 2014-10-02 11:59:12

+0

@AvinashRaj,但可能會有空格,但這不會成爲問題,因爲我使用'!string .IsNullOrWhiteSpace' – MikroDel 2014-10-02 12:03:19

回答

1

這是行不通的?

string result = string.Join(" | ", Regex.Matches(input, @"(\w+|\-)").Cast<Match>().Select(d => d.Value)); 

UPDATE

更好?

string result = string.Join(" | ", Regex.Matches(input, @"([a-zA-Z\. ]+|[0-9]+|\-)").Cast<Match>().Select(d => d.Value.Trim())); 

我不得不分開字母和數字匹配以包含可能的空格。

+0

謝謝(\ w + | \ - )它的作品不錯。唯一的兩個問題是「。」如果輸入是Some.street。我怎樣才能忽略點?第二個是數字前的空格。例如:一些街道34. – MikroDel 2014-10-02 13:37:06

+0

我添加了更新! – Fratyx 2014-10-02 13:48:52

+0

謝謝!如果是解決方案,我會在下週嘗試並接受它! :) – MikroDel 2014-10-02 20:18:00