C# String.Format - 以自定义格式提供
C# String.Format - Feed in custom format
我想知道这是否可行,如果可行,如何实现。
我知道String.Format
函数允许你指定一个参数的格式如下,例如:
String.Format("The Date is {0:yyyy-MM-dd}", DateTime.Now);
但我想知道以所需格式输入的最佳方式(例如 "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);
但我很想知道是否有更好的方法来完成我想做的事情。
谢谢!!
您可以使用:
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));
}
你可以试试这个:
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)}";
}
甚至更简单(使用表达式主体):
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
=> $"{filename} - {DateTime.Now.ToString(DateTimeFormat)}";
很简单,先自己合成格式
string CreateFileName(string filename, string dateTimeFormat = "yyyy-MM-dd")
{
var format = string.Format("\{0\} - \{1:{0}\}", dateTimeFormat);
return string.Format(format, filename, DateTime.Now);
}
你总能做到
return String.Format(new StringBuilder("{0} - {1:").Append(DateTimeFormat).Append("}").ToString(),
filename, DateTime.Now);
...如果你想保持在一行中。
我想知道这是否可行,如果可行,如何实现。
我知道String.Format
函数允许你指定一个参数的格式如下,例如:
String.Format("The Date is {0:yyyy-MM-dd}", DateTime.Now);
但我想知道以所需格式输入的最佳方式(例如 "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);
但我很想知道是否有更好的方法来完成我想做的事情。
谢谢!!
您可以使用:
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));
}
你可以试试这个:
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)}";
}
甚至更简单(使用表达式主体):
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
=> $"{filename} - {DateTime.Now.ToString(DateTimeFormat)}";
很简单,先自己合成格式
string CreateFileName(string filename, string dateTimeFormat = "yyyy-MM-dd")
{
var format = string.Format("\{0\} - \{1:{0}\}", dateTimeFormat);
return string.Format(format, filename, DateTime.Now);
}
你总能做到
return String.Format(new StringBuilder("{0} - {1:").Append(DateTimeFormat).Append("}").ToString(),
filename, DateTime.Now);
...如果你想保持在一行中。