I будет использовать формат {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());
}
Этот выходной код:
Некоторые Street 123/F3 54-897 Big City
Другое Улица 12B 06-816 Меньший Город
Теперь заметим, что код работает только в том случае, если PostalCode является числом. Так что проверьте это, прежде чем вы вызовете метод ToString.
Если вы не уверены в его реальной стоимости, но вы уверены, что там будет 5 «цифры», говорят «1234A» будет действительный почтовый индекс, а затем использовать
{3:##-###}
вместо того, чтобы
{3:00-000}
Является ли PostalCode всегда строкой 5 символов? Если не какая часть идет перед черточкой и какая часть позади? – Steve
Операторы IF и некоторые другие переменные –
@steve PostalCode всегда имеет 5 символов – Cieja