2013-09-24 17 views
0

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

代码:

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

您正试图建立一个格式字符串与字符串格式化?这听起来错了吗?如果你已经有了这些数据,直接建立字符串。 – Jodrell

+0

如果你真的要做到这一点,你不应该看这个问题和答案http://stackoverflow.com/questions/91362/how-to-escape-brackets-curly-braces-in-a-format -string式网。 – Jodrell

回答

1

你不必把新的索引每个循环到AppendFormat,只需使用

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

我需要动态地添加索引值\ –

+0

不,这不是AppendFormat的工作方式...... AppendFormat直接格式化传递给方法的字符串并将其添加到stringbuilder中... – MichaC

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); 
0

这会做你想做的事,但是,只是建立你想要的东西,而不是做2格式。

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