如何将格式字符串实现为自定义格式:
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);
[...]
}
答案 0 :(得分:1)
我不认为这样的事情存在。就像Jon说的那样,这是为数字设计的。
如果你只想用#格式化“你可以编写简单的函数,就像这样
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')以及格式太短(这里:只是'截断'其余值),您将必须检查并决定该怎么做。
但我认为你知道如何做到这一点。
我的磁盘上的某处我有这样的代码:特殊方式格式化数字/发票号码模式。如果我发现这个,我会在博客上发帖并粘贴链接
答案 1 :(得分:0)
“5000”是一个字符串。 string.ToString()唯一可用的重载是具有IFormatProvider [1]的重载。虽然你可以实际实现它,但你最终可能会遇到类似于你不喜欢的int.Parse()。
[1] http://msdn.microsoft.com/de-de/library/29dxe1x2(v=vs.110).aspx