正在转换[string].ToString([自定义格式])



如何将字符串格式化为自定义格式:

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

最新更新