public class AddressParser
{
private AddressParser() { }
public string PostCode { get; set; } = string.Empty;
public string Region { get; set; } = string.Empty;
public string City { get; set; } = string.Empty;
public string Street { get; set; } = string.Empty;
public string Country { get; set; } = string.Empty;
public string Building { get; set; } = string.Empty;
public bool NotParsed { get; set; }
public string Address { get; set; }
}
if(string.isNullOrWhitespace(address))
{
NotParsed = true;
Adsress = address;
}
if(address.ContainSixNumber())
{
// по идее тут мы можем узнать регион и город и в дальнейшем сказать что кто то накосячил с улицей
PostalIndex = address.GetPostalIndex(address);
}
if(address.ContainRussian())
{
Country = Const.Ru;
}
if(address.ContainRegion(address))
{
Region = address.GetRegion(address);
}
// и так далее, причем каждая проверка вырезает ту часть из адреса, которую опознала.
// Причем мы делаем опять же допущение что хаоситов не особо много, а на нашей стороне подданные императора и ошибок встретится разумно
// Если что то не так, взводим флажок NotParsed и выплевываем значение Address как есть