Я бы использовал формат {0:00-000} для почтового индекса, и я бы просто использовал дополнительную переменную для подготовки плоской части в виде пустой строки или ее значения с косой чертой.
public class Address
{
public string Street { get; set; }
public string StreetNumber { get; set; }
public string FlatNumber { get; set; }
public string PostalCode { get; set; }
public string City { get; set; }
public override string ToString()
{
string flatNumberStr = !string.IsNullOrEmpty(FlatNumber) ? " / " + FlatNumber : "";
return string.Format("{0} {1}{2} {3:00-000} {4}", Street, StreetNumber, flatNumberStr, int.Parse(PostalCode), City);
}
}
private static void Main(string[] args)
{
Address addr1 = new Address()
{
Street = "Some Street",
StreetNumber = "123",
FlatNumber = "F3",
PostalCode = "54897",
City = "Big City"
};
Address addr2 = new Address()
{
Street = "Other Street",
StreetNumber = "12B",
PostalCode = "06816",
City = "Smaller City"
};
Console.WriteLine(addr1.ToString());
Console.WriteLine(addr2.ToString());
}
Этот вывод кода:
Some Street 123 / F3 54-897 Большой город
Другая улица 12B 06-816 Меньший город
Теперь обратите внимание, что код работает только в том случае, если PostalCode является числом. Так что проверьте это, прежде чем вызывать метод ToString.
Если вы не уверены в его фактическом значении, но уверены, что там будет 5 цифр, скажем, 1234A будет действительным почтовым индексом, тогда используйте
{3:##-###}
вместо этого
{3:00-000}
person
Wapac
schedule
01.05.2015