我需要在一个字符串中格式化地址。 现在我有以下属性:
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);
答案 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);
有几点需要指出:
我从格式字符串中删除了斜杠/
,并使用ternary operator
(!string.IsNullOrEmpty(model.Address.FlatNumber ? "/ " + model.Address.FlatNumber : "")
这将检查FlatNumber
是否为空,如果不是,则使用/
后跟FlatNumber
,如果是,则只使用空字符串。
我为您的格式添加了一个附加索引,即{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