格式地址字符串 - 邮政编码和单位号码

Format address string - postal code and flat number

我需要在一个字符串中格式化地址。 现在我有这样的属性:

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; }

现在我有

String.Format("{0} {1} / {2} {3} {4}", model.Address.Street, model.Address.StreetNumber, model.Address.FlatNumber, data.Address.PostalCode, data.Address.City);
  1. 邮政编码的格式为 "xxxxx"(x 为数字)。我想要 "xx-xxx".
  2. 格式的邮政编码
  3. 没有固定号码,如果固定号码为空字符串,如何隐藏固定号码和字符'/'?

你可以这样做:

String.Format("{0} {1} {2} {3}-{4} {5}", 
    model.Address.Street, 
    model.Address.StreetNumber, 
    (!string.IsNullOrEmpty(model.Address.FlatNumber ? '/ ' + model.Address.FlatNumber : ""), 
    data.Address.PostalCode.Substring(0, 2), 
    data.Address.PostalCode.Substring(2), 
    data.Address.City);

有几点需要指出:

  1. 我从你的格式字符串中删除了斜杠 / 并使用 ternary operator

    添加了一个语句

    (!string.IsNullOrEmpty(model.Address.FlatNumber ? "/ " + model.Address.FlatNumber : "")

这将检查 FlatNumber 是否为空,如果不是,则使用 / 后跟 FlatNumber,或者如果是,则仅使用空字符串。

  1. 我为您的格式添加了一个附加索引,即 {3}-{4},用于邮政编码。然后关联的语句将提取部分邮政编码以在破折号 -:

    之前和之后

    data.Address.PostalCode.Substring(0, 2) //before the dash data.Address.PostalCode.Substring(2) //after the dash

试试这个

        private string postalCode = "";
        public string PostalCode
        {
            get{return postalCode.Substring(0,2) + "-" + PostalCode.Substring(2);}
            set { postalCode = value.Replace("-",""); }
        }

我会为邮政编码使用 {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 Big City

Other Street 12B 06-816 Smaller City

现在请注意,该代码仅在 PostalCode 为数字时才有效。所以在调用 ToString 方法之前一定要检查一下。

如果您不确定它的实际值,但您确定会有 5 个“数字”,假设“1234A”是有效的邮政编码,则使用

{3:##-###} 

而不是那个

{3:00-000}