如何将字符串格式化为自定义格式:
int value = 5000;
String.Format("{0:## ###}", value);
value.ToString("##");
但将值作为字符串,而不使用转换为数字?像这样的东西:
String.Format("{0:## ###}, "5000");
**更新:
我正在尝试创建一个通用函数:
public string FormatString(string value, string format = "") {
if (value == null){
return "";
}
return String.Format("{0:" + format + "}", value);
}
public bool OtherFunction(id){
var data = dc.GetData(id);
ViewBag.DescriptionText = FormatString(data.Description).Replace("n", "<br />");
ViewBag.Phone = FormatString(data.Phone, "(##) ####-#####");
ViewBag.City= FormatString(data.City);
[...]
}
我认为不存在这样的东西。正如乔恩所说,这是为数字而设计的。
如果你只想用#"格式化",你可以写一个简单的函数,比如这个
public string FormatString(string value, string format = "")
{
if (String.IsNullOrEmpty(value) || String.IsNullOrEmpty(format))
return value;
var newValue = new StringBuilder(format);
for (int i = 0; i < newValue.Length; i++)
{
if (newValue[i] == '#')
if (value.Length > 0)
{
newValue[i] = value[0];
value = value.Substring(1);
}
else
{
newValue[i] = '0';
}
}
return newValue.ToString();
}
当然,这是一个非常简单的问题。如果格式太长(如这里:用"0"填充)和格式太短(这里:只"截断"其余值),您必须检查并决定该怎么办。
但我想你已经知道怎么做了。
在我的磁盘上的某个地方,我有这样的代码:用特殊的方式格式化号码/发票号码的模式。如果我能找到这个,我会在博客上发布一些帖子,并粘贴链接
"5000"是一个字符串。字符串唯一可用的重载。ToString()是一个带有IFormatProvider[1]的函数。虽然您实际上可以实现它,但您可能最终会得到类似于int.Parse()的东西,而您不喜欢它。
[1]http://msdn.microsoft.com/de-de/library/29dxe1x2(v=vs.110).aspx