格式地址字符串 - 邮政编码和固定电话号码

时间:2015-05-01 12:47:54

标签: c# string string.format postal-code

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

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 个答案:

答案 0 :(得分:2)

你可以这样做:

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 : "")

  2. 这将检查FlatNumber是否为空,如果不是,则使用/后跟FlatNumber,如果是,则只使用空字符串。

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

      之前和之后进行

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

答案 1 :(得分:2)

我会使用{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());
}

此代码输出为:

  

大街123 / F3 54-897大城市

     

其他街12B 06-816小城市

现在请注意,只有在PostalCode是一个数字时,代码才有效。所以在调用ToString方法之前请检查它。

如果你不确定它的实际价值,但你确定会有5"",说" 1234A"将是一个有效的邮政编码,然后使用

{3:##-###} 

而不是那个

{3:00-000}

答案 2 :(得分:0)

试试这个



class_alias