2014-02-18 82 views
0

这是一个初学者的问题,但真实的是我从来不需要使用这样的方法!
所以我需要你的耐心..
我有几个字符串命名为t1,t2,t3,t4 ...我想写他们到一个文件,每行一个
所以我打开文件。 。使用for循环写入文件

string t1 = "aaa"; 
string t2 = "bbb"; 
string t3 = "ccc"; 
//10 strings 

for (int i = 1; i<= 10; i++) 
{ 
    string key = "t" + i; 
    strLine = convertToFile(key); 
    f.WriteLine(strLine); 
} 
f.Close(); 

像这一切我在文件中得到的是
T1
T2
T3

回答

0

更好地存储你的List<string>字符串,然后用这个方法:

File.WriteAllLines(filePath, lines); 

它将存储你的文件的字符串列表在filePath

,创建从字符串列表做:

var lines = new List<string>{ t1, t2, t3, t4, t5, t6, t7, t8, t9, t10}; 
+0

,这是原来的想法..但我试图以不同的方式去做。 –

+0

@ user3061846为什么你想以其他方式做到这一点? – wudzik

+0

因为我需要瓶坯几个操作与字符串,所以我试图simplify..But我意识到,我的代码复杂...感谢 –

3

使用集合,而不是单个变量:

var allStrings = new List<string>(); 
allStrings.Add("aaa"); 
allStrings.Add("bbb"); 
allStrings.Add("ccc"); 
// ... 

using (StreamWriter w = File.AppendText(path)) 
{ 
    foreach(string str in allStrings) 
     w.WriteLine(str); 
} 

或更简洁使用File.WriteAllLines

File.WriteAllLines(path, allStrings); 
1

这么简单

StringBuilder sb = new StringBuilder(); 

sb.AppendLine("aaa"); 
sb.AppendLine("bbb"); 
sb.AppendLine("ccc"); 

System.IO.File.WriteAllText("D:\fileName.txt", sb.ToString()); 
1

的一点是,你不能访问你的代码概括的方式变量。你在for循环中做的是构造你要访问的变量名。但是,您只需生成一个名称类似于变量的字符串,但无法通过字符串访问它们。 C#中的一个变量是一个引用,你给它的名字并不重要。因此,上面的所有答案都可以解决您的问题,但您应该仔细考虑您的代码所期望的结果以及为什么它不以这种方式工作。

1

如果您正在尝试将字符串转换(从用户输入也许)到一个局部变量,那么你会使用if或情况会更好。

for (int i = 1; i <= 10; i++) 
      { 
       string key = "t" + i; 
       if (key == "t1") 
       { 
       f.WriteLine(t1); 
       } 
       else if (key == "t2") 
       { 
       f.WriteLine(t2); 
       } 

      } 

还是要建立在添Schmelter的回答

var t = new List<string>(); 
     t.Add("aaa"); 
     t.Add("bbb"); 
     t.Add("ccc"); 
     // ... 

     using (StreamWriter w = File.AppendText(path)) 
     { 
      for (int i = 1; i <= 10; i++) 
      { 
       string key = "t"+i; 

       if (key == "t1") 
       { 
       w.WriteLine(t[1]); 
       } 
       else if (key == "t2") 
       { 
        w.WriteLine(t[2]); 
       } 

      } 

     } 

或不串

  for (int i = 1; i <= 10; i++) 
      { 
       w.WriteLine(t[i]); 
      } 
+0

第一:为什么要使用多个if的?第二:为什么你要在第二个例子中构建关键?为什么不:'t [i]'?简化您的代码。 – wudzik

+0

构建循环中的密钥,因为提问者在循环中构建了密钥。为了清楚起见,我将添加没有字符串的第三个示例。 – AAberdeen