How to escape braces (curly brackets) in a format string in .NET
如何在使用
1 2 | String val ="1,2,3" String.Format(" foo {{0}}", val); |
此示例不引发异常,但输出字符串
有没有办法摆脱括号?
要输出
1 2 | string t ="1, 2, 3"; string v = String.Format(" foo {{{0}}}", t); |
要输出
是的,要在
所以这个
1 2 | String val ="1,2,3"; String.Format(" foo {{{0}}}", val); |
将输出
但是您必须了解C中的一个设计错误,即通过以上逻辑,您可以假定下面的代码将打印24.00
1 2 | int i = 24; string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00} |
但这张照片是n。这是因为C解析转义序列和格式化字符的方式。要在上述情况下获得所需的值,您必须使用它。
1 | String.Format("{0}{1:N}{2}","{", i,"}") //evaluates to {24.00} |
参考文献string.format gottach和字符串格式常见问题解答
快到了!大括号的转义序列是
1 2 | string t ="1, 2, 3"; string v = String.Format(" foo {{{0}}}", t); |
您可以使用双左括号和双右括号,它们只会在您的页面上显示一个括号。
摆脱花括号和使用字符串插值使一个有趣的挑战。您需要使用四个括号来转义字符串插值解析和
1 2 3 4 5 | string localVar ="dynamic"; string templateString = $@"{0}this is my {localVar} template using a {{{{custom tag}}}}"; string result = string.Format(templateString,"String Interpolation"); // OUTPUT: String Interpolationthis is my dynamic template using a {custom tag} |
这里是为了寻找如何在C_中特别构建JSON字符串(而不序列化类/对象)。换句话说,当使用C和"逐字字符串文本"(前缀为"@"的双引号字符串)中的内插字符串时,如何转义大括号和引号,例如…
1 | var json = $@"{{""name"":""{name}""}}"; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [TestMethod] public void BraceEscapingTest() { var result = String.Format("Foo {{0}}","1,2,3"); //"1,2,3" is not parsed Assert.AreEqual("Foo {0}", result); result = String.Format("Foo {{{0}}}","1,2,3"); Assert.AreEqual("Foo {1,2,3}", result); result = String.Format("Foo {0} {{bar}}","1,2,3"); Assert.AreEqual("Foo 1,2,3 {bar}", result); result = String.Format("{{{0:N}}}", 24); //24 is not parsed, see @Guru Kara answer Assert.AreEqual("{N}", result); result = String.Format("{0}{1:N}{2}","{", 24,"}"); Assert.AreEqual("{24.00}", result); result = String.Format("{{{0}}}", 24.ToString("N")); Assert.AreEqual("{24.00}", result); } |
或者您可以使用这样的C字符串插值(C 6.0中提供的功能)
1 2 | var value ="1, 2, 3"; var output = $" foo {{{value}}}"; |
我的目标是:
我需要把值
C代码:
1 | string delimiter="{{CR}}{{LF}}"; |
注意:要正常转义特殊字符,必须使用。如果要打开花括号,请额外使用一个类似的括号。要关闭花括号,请额外使用一个。