0

如何AppendFormat动态使用字符串生成器。我下面的代码显示错误。如何在 MVC c# 中正确地做到这一点?

代码:

var s = new StringBuilder();
s.AppendFormat("\"{0}\",\"{1}",
                     "test1",
                     "test2"
                              );
for(var i = 2; i < 10 ; i++)
{
     s.AppendFormat(",\"{"+i+"}\"",  "loop"); // error shows here
}
4

3 回答 3

1

您不必将每个循环的新索引放入 AppendFormat,只需使用

        var s = new StringBuilder();
        s.AppendFormat("\"{0}\",\"{1}",
                            "test1",
                            "test2"
                                     );
        for (var i = 2; i < 10; i++)
        {
            s.AppendFormat(",\"{0}\"", "loop"); 
        }
于 2013-09-24T11:32:01.877 回答
0

每当您使用 AppendFormat 时,它都应以 0 开头。

尝试这个。

var s = new StringBuilder();
s.AppendFormat("\"{0}\",\"{1}",
                 "test1",
                 "test2"
   );
for(var i = 2; i < 10 ; i++)
{
 s.AppendFormat(",\"{0}\"",  "loop");  
}  

如果您需要动态计数器,那么这将是可行的。

var s = new StringBuilder();
var s1 = new StringBuilder();
string[] _d = new string [10];
s.AppendFormat("\"{0}\",\"{1}",
               "test1",
               "test2"
              );
for(var i = 0; i < 10 ; i++)
{
     s1.Append(",\" Loop {"+i+"}\"");
    _d[i] = i.ToString();
}
s.AppendFormat(s1.ToString(), _d);
于 2013-09-24T11:47:08.670 回答
0

这将做你想要的,但是,首先构建你想要的,而不是做两种格式。

var format = new StringBuilder();
format.Append("\"{0}\",\"{1}\"");
for(var i = 2; i < 10 ; i++)
{
    format.AppendFormat(",\"{{{0}}}\"",  i);
}

那么你可以这样做,

var result = string.Format(
    format.ToString(),
    "test1",
    "test2",
    "loop",
    "loop",
    "loop",
    "loop",
    "loop",
    "loop",
    "loop",
    "loop",
    "loop");
于 2013-09-24T11:48:32.873 回答