编程语言
首页 > 编程语言> > C#中的字符串格式

C#中的字符串格式

作者:互联网

我正在研究字符串格式的“备忘单”,以便了解不同的字符串格式参数如何影响字符串输出.在使用DateTime字符串格式化参数时,我编写了这个小测试:

char[] dtFormats = new char[] { 'd', 'D', 'f', 'F', 'g', 'G', 'm', 'o', 'r', 's', 't', 'T', 'u', 'U', 'y' };
foreach (char format in dtFormats)
{
    Console.WriteLine("DateTime format {0} = {1:" + format + "}", format, DateTime.Now);
}

它所做的就是使用每个参数显示DateTime的所有不同格式.

除此之外,我想重点介绍一下:

Console.WriteLine("DateTime format {0} = {1:" + format + "}", format, DateTime.Now);

现在我知道将{0}替换为format(参数0),并将{1 :?}替换为DateTime.Now(参数1).

我试图这样重写:

Console.WriteLine("DateTime format {0} = {1:{0}}", format, DateTime.Now);

这引发了FormatException,但我想知道为什么您不能在其他格式字符串占位符内嵌套字符串占位符.

在这种情况下,应将{0}替换为format参数,并将{1:{0}}替换为DateTime.Now,后跟冒号和format参数.

这在C#中不可能吗?

编辑:

因此,为什么Console.WriteLine(“ {{0}}”,“ Hello World”);结果是“ {0}”而不是“ {Hello World}”?

解决方法:

我们如何简化一下呢?当语法指出{{表示单个文字{时,您要嵌套括号.这是您要寻找的:

Console.WriteLine("DateTime format {0} = {1}", format, DateTime.Now.ToString(format));

并回答这个问题:

For that matter, why does Console.WriteLine(“{{0}}”, “Hello World”); result in “{0}” instead of “{Hello World}”?

我重申{{,在语法上表示单个文字{.

现在,如果您想使用冒号语法,那么无论如何您都会犯错,它的工作方式类似于{100:C},它将以货币格式显示100.但是您实际上不需要在这里这样做,因为要使该格式正常工作将很困难,因为您需要使用{1:{0}},而且由于转义语法,这样做将失败.

标签:arguments,string-formatting,c,net,formatting
来源: https://codeday.me/bug/20191030/1969657.html