使用string.Format时,获取输入字符串的格式不正确

时间:2015-12-22 15:22:20

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

我正在尝试使用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();

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

2 个答案:

答案 0 :(得分:2)

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

例如,第一行和最后一行应如下所示:

{{
}}

虽然这条线必须保持不变:

\"{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");

答案 1 :(得分:0)

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