协慌网

登录 贡献 社区

如何在. NET 中的格式字符串中转义大括号(花括号)

如何使用string.Format转义括号。例如:

String val = "1,2,3"
String.Format(" foo {{0}}", val);

此示例不会抛出异常,但会输出字符串foo {0}

有没有办法摆脱括号?

答案

要输出foo {1, 2, 3}你必须做以下事情:

string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);

要输出{您使用{{并输出}您使用}}

是输出{string.Format你必须像这样{{

所以这

String val = "1,2,3";
String.Format(" foo {{{0}}}", val);

将输出"foo {1,2,3}"

但你必须知道 C#中的一个设计错误,通过上面的逻辑,你会假设下面的代码会打印 {24.00}

int i = 24;
string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00}

但这打印 {N}。这是因为 C#解析转义序列和格式化字符的方式。要在上述情况下获得所需的值,您必须使用它。

String.Format("{0}{1:N}{2}", "{", i, "}") //evaluates to {24.00}

参考文章String.Format gottachString Formatting FAQ

差不多了!大括号的转义序列为{{}}因此对于您的示例,您将使用:

string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);