C#String.Format - 以自定义格式提供

时间:2015-07-30 12:22:41

标签: c# string string.format

我想知道这是否可能,如果可行,如何实现它。

我知道String.Format函数允许您为参数指定格式,如下所示:

String.Format("The Date is {0:yyyy-MM-dd}", DateTime.Now);

但我想知道以所需格式提供的最佳方式(例如,#y; yyyy-MM-dd")最终会得到一个如下工作的功能(不起作用,但是显示了我想要完成的事情:

static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
    return String.Format("{0} - {1:{2}}", filename, DateTime.Now, DateTimeFormat);
}

我想我可以先放一个假的占位符,先做一个String.Replace

string formatString = "{0} - {1:{FMT}}";
formatString = formatString.Replace("{FMT}", DateTimeFormat);

但我很想知道是否有更好的方法来完成我想要做的事情。

谢谢!

4 个答案:

答案 0 :(得分:6)

您可以使用:

var format = "yyyy-MM-dd";
var dateTimeString = string.Format("{0}", DateTime.Now.ToString(format));

所以你的功能将成为:

static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
    return String.Format("{0} - {1}", filename, DateTime.Now.ToString(DateTimeFormat));
}

答案 1 :(得分:2)

你可以试试这个:

static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
    return String.Format("{0} - {1}", filename, DateTime.Now.ToString(DateTimeFormat));
}

同样在 Visual Studio 2015 中,您可以使用$更简单地完成。

static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
    return $"{filename} - {DateTime.Now.ToString(DateTimeFormat)}";
}

更简单(使用Expression主体):

 static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd") 
            => $"{filename} - {DateTime.Now.ToString(DateTimeFormat)}";

答案 2 :(得分:0)

这很简单,首先是格式化本身

string CreateFileName(string filename, string dateTimeFormat = "yyyy-MM-dd")
{
    var format = string.Format("\{0\} - \{1:{0}\}", dateTimeFormat);
    return string.Format(format, filename, DateTime.Now);
}

答案 3 :(得分:0)

你可以随时

return String.Format(new StringBuilder("{0} - {1:").Append(DateTimeFormat).Append("}").ToString(), 
                     filename, DateTime.Now);

...如果你想把它保持在一行。