c# - 为什么这个 String.Format 操作会抛出 FormatException?

标签 c# .net

我为它创建了一个解决方法,但对以下字符串感到困惑:

string dpicker = "<script>$(function() { $(\"#{0}\").datepicker();});</script>";

执行此操作时抛出 FormatException:

String.Format(dpicker, "DatePicker");

实际问题是什么?

最佳答案

您需要转义函数的花括号:

string dpicker = "<script>$(function() {{ $(\"#{0}\").datepicker();}});</script>";
//                                     ^^                          ^^

如此处所用,正确的做法是将它们加倍。参见 Escaping Braces .

string.Format 方法的工作原理是逐个字符地查看整个字符串,然后选择它们属于“文字”类别还是格式参数类别。一旦它看到你未转义的花括号,它就明白这意味着“我们现在正在格式化”,所以它首先寻找一个数字字符(当然,这不是花括号中唯一可接受的值,但在至少一个数字必须在前),找不到一个,并抛出异常。

关于c# - 为什么这个 String.Format 操作会抛出 FormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286269/

相关文章:

c# - 当此引用已从另一个项目添加时,为什么我需要添加相同的引用

c# - 如果有重复项,Linq 只删除一项

c# - 如何在 ASP.NET Core 中手动注册 FluentValidation 验证器?

c# - Fluent NHibernate 和好友关系

.net - 如何右对齐 DataGridView 列中的文本?

.net - 如何允许使用 XslCompiledTransform (.NET) 通过 XSLT 的 document(uri) 函数加载 XML 文档中的 DTD

c# - C# 中的 MySQL utf8_general_ci

c# - 集成测试 ASP.NET Core MVC 时出现 CompilationFailedException

c# - .NET 正则表达式整个字符串匹配

.net - WCF 'A Call to SSPI Failed, see inner exception'