内插字符串的软编码格式说明符 c# 6.0
Soft coding format specifier for Interpolated strings c# 6.0
我知道我们可以在 C#6 中使用格式说明符进行字符串插值
var someString = $" the date was ... {_criteria.DateFrom:dd-MMM-yyyy}";
但是我一遍又一遍地以相同的方法使用相同的格式,所以想对其进行软编码,但不确定该怎么做,或者即使它可能,
DateTime favourite;
DateTime dreaded;
...
...
const string myFormat = "dd-MMM-yyyy";
var aBigVerbatimString = $@"
my favorite day is {favourite:$myFormat}
but my least favourite is {dreaded:$myFormat}
blah
blah
";
谁能告诉我该怎么做,或者向我确认这是不可能的,因为我已经阅读了一些资料,但没有发现任何可能的建议
字符串插值直接编译成等价的格式语句,所以
var someString = $" the date was ... {_criteria.DateFrom:dd-MMM-yyyy}";
字面意思
var someString = string.Format(
" the date was ... {0:dd-MMM-yyyy}",
_criteria.DateFrom);
在功能上等同于
var someString = string.Format(
" the date was ... {0}",
_criteria.DateFrom.ToString("dd-MMM-yyyy"));
因为编译器最终将 dd-MMM-yyyy
视为要传递给 ToString()
方法的字符串文字,因此在使用此习惯用法时无法避免硬编码。
如果您想对格式说明符字符串进行软编码,您可以选择直接使用 string.Format
,如下所示:
var someString = string.Format(
" the date was ... {0}",
_criteria.DateFrom.ToString(formatSpecifier));
我知道我们可以在 C#6 中使用格式说明符进行字符串插值
var someString = $" the date was ... {_criteria.DateFrom:dd-MMM-yyyy}";
但是我一遍又一遍地以相同的方法使用相同的格式,所以想对其进行软编码,但不确定该怎么做,或者即使它可能,
DateTime favourite;
DateTime dreaded;
...
...
const string myFormat = "dd-MMM-yyyy";
var aBigVerbatimString = $@"
my favorite day is {favourite:$myFormat}
but my least favourite is {dreaded:$myFormat}
blah
blah
";
谁能告诉我该怎么做,或者向我确认这是不可能的,因为我已经阅读了一些资料,但没有发现任何可能的建议
字符串插值直接编译成等价的格式语句,所以
var someString = $" the date was ... {_criteria.DateFrom:dd-MMM-yyyy}";
字面意思
var someString = string.Format(
" the date was ... {0:dd-MMM-yyyy}",
_criteria.DateFrom);
在功能上等同于
var someString = string.Format(
" the date was ... {0}",
_criteria.DateFrom.ToString("dd-MMM-yyyy"));
因为编译器最终将 dd-MMM-yyyy
视为要传递给 ToString()
方法的字符串文字,因此在使用此习惯用法时无法避免硬编码。
如果您想对格式说明符字符串进行软编码,您可以选择直接使用 string.Format
,如下所示:
var someString = string.Format(
" the date was ... {0}",
_criteria.DateFrom.ToString(formatSpecifier));