我正在尝试使用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();
现在变得非常令人沮丧:(。请帮忙!!
答案 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。