【问题标题】:Getting Input string was not in a correct format while using string.Format使用 string.Format 时获取输入字符串的格式不正确
【发布时间】:2015-12-22 15:22:19
【问题描述】:

我正在尝试使用 string.format 来填充字符串模板中的一些值,下面是字符串值:

{
\"version\":\"9.40.20153.0\",\"sheetCount\":1,
\"sheets\":{

\"{0}\":
{
\"name\":\"{1}\",
\"rowCount\":{2},
\"columnCount\":{3},
\"colHeaderData\":{
\"dataTable\":{
{4}
}
        },
\"data\":{
\"dataTable\":{
                 {5}
        },
    \"index\":0
    }
  }
}

下面是调用string.Format方法的代码:

string newString=SB.AppendLine(string.Format(genericTemplate, sheetName,columnCount, rowCount,3,5,6)).ToString();

现在变得非常令人沮丧:(。请帮忙!!

【问题讨论】:

    标签: c# asp.net .net c#-4.0


    【解决方案1】:

    您必须转义所有不用于格式化的大括号。 这是通过简单地复制每个大括号来完成的。

    例如第一行和最后一行应该是这样的:

    {{
    }}
    

    虽然这条线必须保持原样:

    \"{0}\":
    
    var genericTemplate = @"
    {{
    ""version"":""9.40.20153.0"",""sheetCount"":1,
    ""sheets"":{{
    
    ""{0}"":
    {{
    ""name"":""{1}"",
    ""rowCount"":{2},
    ""columnCount"":{3},
    ""colHeaderData"":{{
    ""dataTable"":{{
    {4}
    }}
            }},
    ""data"":{{
    ""dataTable"":{{
                     {5}
            }},
        ""index"":0
        }}
      }}
    }}";
    var newString = string.Format(genericTemplate, "arg1", "arg2", "arg3", "arg4", "arg5", "arg6");
    

    【讨论】:

    • 很好,它解决了这个问题:D
    【解决方案2】:

    发生这种情况是因为您试图在字符串中使用花括号。正如另一个答案所述,您需要逃避这些。您更好的选择可能是为此创建一个对象并将其序列化为 JSON。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多