using System;
using System.Linq ;
using System.Collections .Generic ;
public class Test
{
class Address
{
public int ? Number { get; set; }
public string Street { get; set; }
}
public static void Main( )
{
var strings = new List< string> ( ) {
"10 Downing street" ,
"Birch Lane 7" ,
"Palm creek 8 street" ,
"84 Chancellor place" ,
"Battle on the somme 56 "
} ;
List< Address> result = new List< Address> ( ) ;
foreach ( string str in strings)
{
Address addr = new Address( ) ;
result.Add ( addr) ;
int num, numIndex = int .MinValue ;
string[ ] tokens = str.Split ( new[ ] { ' ' } , StringSplitOptions.RemoveEmptyEntries ) ;
for ( int i = 0 ; i < tokens.Length ; i++ )
{
if ( ! addr.Number .HasValue && int .TryParse ( tokens[ i] , out num) )
{
addr.Number = num;
numIndex = i;
}
}
if ( addr.Number .HasValue )
{
addr.Street = string.Join ( " " , tokens.Where ( ( s, i) => i != numIndex) .ToArray ( ) ) ;
}
else
{
addr.Street = str;
}
}
foreach( var addr in result)
Console.WriteLine ( "Street:{0} Number:{1}" , addr.Street , addr.Number ) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICBjbGFzcyBBZGRyZXNzCiAgICB7CiAgICAgICAgcHVibGljIGludD8gTnVtYmVyIHsgZ2V0OyBzZXQ7IH0KICAgICAgICBwdWJsaWMgc3RyaW5nIFN0cmVldCB7IGdldDsgc2V0OyB9CiAgICB9CiAgICAKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgIAkgICB2YXIgc3RyaW5ncyA9IG5ldyBMaXN0PHN0cmluZz4oKSB7IAogICAgICAgICAgICAgICAgIjEwIERvd25pbmcgc3RyZWV0IiwKICAgICAgICAgICAgICAgICJCaXJjaCBMYW5lIDciLCAKICAgICAgICAgICAgICAgICJQYWxtIGNyZWVrIDggc3RyZWV0IiwKICAgICAgICAgICAgICAgICI4NCBDaGFuY2VsbG9yIHBsYWNlIiwKICAgICAgICAgICAgICAgICJCYXR0bGUgb24gdGhlIHNvbW1lIDU2ICIKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIExpc3Q8QWRkcmVzcz4gcmVzdWx0ID0gbmV3IExpc3Q8QWRkcmVzcz4oKTsKICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIHN0ciBpbiBzdHJpbmdzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBZGRyZXNzIGFkZHIgPSBuZXcgQWRkcmVzcygpOwogICAgICAgICAgICAgICAgcmVzdWx0LkFkZChhZGRyKTsKICAgICAgICAgICAgICAgIGludCBudW0sIG51bUluZGV4ID0gaW50Lk1pblZhbHVlOwogICAgICAgICAgICAgICAgc3RyaW5nW10gdG9rZW5zID0gc3RyLlNwbGl0KG5ld1tdeycgJ30sIFN0cmluZ1NwbGl0T3B0aW9ucy5SZW1vdmVFbXB0eUVudHJpZXMpOwogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b2tlbnMuTGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRyLk51bWJlci5IYXNWYWx1ZSAmJiBpbnQuVHJ5UGFyc2UodG9rZW5zW2ldLCBvdXQgbnVtKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIuTnVtYmVyID0gbnVtOwogICAgICAgICAgICAgICAgICAgICAgICBudW1JbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGFkZHIuTnVtYmVyLkhhc1ZhbHVlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFkZHIuU3RyZWV0ID0gc3RyaW5nLkpvaW4oIiAiLCB0b2tlbnMuV2hlcmUoKHMsIGkpID0+IGkgIT0gbnVtSW5kZXgpLlRvQXJyYXkoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWRkci5TdHJlZXQgPSBzdHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGZvcmVhY2godmFyIGFkZHIgaW4gcmVzdWx0KQogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiU3RyZWV0OnswfSBOdW1iZXI6ezF9IiwgYWRkci5TdHJlZXQsIGFkZHIuTnVtYmVyKTsKICAgIH0KfQ==