Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当字符串中有额外的}时,String.format抛出不正确的格式异常。解决这个问题的最佳方法是什么?_C#_Json_String_Formatexception - Fatal编程技术网

C# 当字符串中有额外的}时,String.format抛出不正确的格式异常。解决这个问题的最佳方法是什么?

C# 当字符串中有额外的}时,String.format抛出不正确的格式异常。解决这个问题的最佳方法是什么?,c#,json,string,formatexception,C#,Json,String,Formatexception,当字符串中有一个额外的}时,String.format抛出不正确的格式异常,如下面的代码段所示 var input = "1"; var data = string.Format(@"{0}}", input); 我可以通过添加一个额外的}来解决这个问题,如下所示 var data = string.Format(@"{0}}}", input); 但是,我需要知道是否有更好的解决方案来解决此问题否,这是预期的功能。从文档中: 如何在结果字符串中包含文字大括号(“{”和“}”)? 单个左

当字符串中有一个额外的}时,String.format抛出不正确的格式异常,如下面的代码段所示

 var input = "1";
 var data = string.Format(@"{0}}", input);
我可以通过添加一个额外的}来解决这个问题,如下所示

var data = string.Format(@"{0}}}", input);

但是,我需要知道是否有更好的解决方案来解决此问题

否,这是预期的功能。从文档中:

如何在结果字符串中包含文字大括号(“{”和“}”)? 单个左大括号或右大括号始终被解释为格式项的开始或结束。要从字面上解释,它必须被转义。通过添加另一个大括号(“{”和“}}”,而不是“{”和“}”),可以对大括号进行转义,如下方法调用所示:


不,这是预期的功能。从文档中:

如何在结果字符串中包含文字大括号(“{”和“}”)? 单个左大括号或右大括号始终被解释为格式项的开始或结束。要从字面上解释,它必须被转义。通过添加另一个大括号(“{”和“}}”,而不是“{”和“}”),可以对大括号进行转义,如下方法调用所示:


我强烈建议使用C#6字符串插值功能,因为它更具可读性和可维护性:

var data = $"{{{input}}}";
当字符串变大时,您将看到Visual Studio格式设置和字符串着色的好处,如下所示:


我强烈建议使用C#6字符串插值功能,因为它更易于阅读和维护:

var data = $"{{{input}}}";
当字符串变大时,您将看到Visual Studio格式设置和字符串着色的好处,如下所示:


}
是格式化上下文中需要转义的特殊字符。你想要一种更干净易读的方式吗?@user3185569当我在字符串中有一个大的json时,使用额外的}字符进行转义会使代码难看。有没有更干净的方式呢?你正在使用
string.Format
来回显json!?我认为字符串插值会更干净,“{{{input}}”
}
是格式化上下文中需要转义的特殊字符。你想要一种更干净易读的方式吗?@user3185569当我在字符串中有一个大的json时,使用额外的}字符进行转义会使代码难看。有没有更干净的方式呢?你正在使用
string.Format
来回显json!?我认为字符串插值会更干净$“{{{input}}}”,看起来更干净。谢谢但有一个小疑问,参数的替换是否会导致每次替换时都创建一个新字符串?@ShaijuJanardhanan编译器在幕后将上述内容转换为
string.Format
。因此,这只是一个语法糖,与您的方法没有什么不同,希望它更干净、更可读、更可维护。这看起来更干净。谢谢但有一个小疑问,参数的替换是否会导致每次替换时都创建一个新字符串?@ShaijuJanardhanan编译器在幕后将上述内容转换为
string.Format
。因此,这只是一个语法糖,与您的方法没有什么不同,希望它更干净、更可读和更可维护。