如何在String.Format中放入未处理(转义)的单词

Bac*_*tnz 23 .net c# escaping date string-formatting

我正在格式化日期:

str = String.Format("{0:MMM d m:mm"+yearStr+"}", dt);
Run Code Online (Sandbox Code Playgroud)

我想在"d"之后加上"at"这个词,但我不希望字符串格式化它.我只想要"at"这个词.

我怎样才能做到这一点?

Mic*_*Liu 40

您可以使用引号括起文字字符串,对于较长的字符串,可能比使用反斜杠转义每个字符更容易,更易读:

str = String.Format("{0:MMM d 'at' m:mm"+yearStr+"}", dt);
Run Code Online (Sandbox Code Playgroud)

请参阅MSDN Library中的自定义日期和时间格式字符串(搜索"文字字符串分隔符").

(你的意思是h:mm代替m:mm吗?)


usr*_*usr 10

string.Format(@"{0:MMM d \a\t m:mm" + yearStr + "}", dt);
Run Code Online (Sandbox Code Playgroud)

注意双重转义 - 我使用了一个varbatim字符串,所以我能够\在字符串内部写为普通字符.然后格式化例程DateTime将此(再次)解释为转义序列.

这是一个更简单的变体:

string.Format("{0:MMM d} at {0:m:mm" + yearStr + "}", dt);
Run Code Online (Sandbox Code Playgroud)

第一种变体可能被一些人认为令人作呕.不过,后者很清楚.