C#中带有花括号的字符串如何使用String.Format?

33

可能是重复问题:
如何在 String.Format 中转义花括号 '{'

C# 中有一个 String.Format 方法,允许您使用标记 {0}{1} 等来格式化字符串。

我正在尝试创建一个简单的 JSON 字符串,其中需要在字符串中包含花括号。这导致格式化方法出现错误。

String.Format("{ foo:'{0}', bar:'{1}' }", foo, bar);

在大括号前添加转义符并没有起作用。

抛出异常,表示我的字符串格式不正确,请问有谁知道如何解决这个问题?


在Framework 4.6或更高版本中,您可以这样做... 字符串moe =“Moe”; 字符串larry =“Larry”; 字符串卷曲=“{Curly}”; 字符串结果=$"1:{moe} 2:{larry} 3:{curly}"; - rwg
2个回答

66

您可以通过在格式字符串中将大括号加倍来转义它们:

string.Format("{{ foo: '{0}', bar: '{1}' }}", foo, bar);

14

你可以简单地使用{{}}来转义大括号。

Console.WriteLine(String.Format("{0}, {1}, {{{2}}}", "Moe", "Larry", "Curly"));

生成:

莫, 拉里, {卷发}


8
您需要注意不要在大括号上进行三重嵌套,虽然在这种情况下可以工作,但通常解析器是将其视为'{ {{}'或'}} }'。更好的方法是创建一个{3}表示大括号本身。 - Kyle W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接