这是一个初学者的问题,但事实是我从来不需要使用这样的方法!
所以我需要你的耐心..
我有几个名为t1,t2,t3,t4的字符串...我想将它们写入一个文件,每行一个
所以我打开文件..
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 :(得分: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 :(得分:1)
简单就是那个
StringBuilder sb = new StringBuilder();
sb.AppendLine("aaa");
sb.AppendLine("bbb");
sb.AppendLine("ccc");
System.IO.File.WriteAllText("D:\fileName.txt", sb.ToString());
答案 2 :(得分:1)
重点是您无法以代码概述的方式访问变量。你在for循环中做的是构造你要访问的变量名。但是,您只需生成一个名为变量的字符串,但不能通过字符串访问它们。 C#中的变量是一个引用,你给它的名字并不重要。所以上面的所有答案都可以解决您的问题,但是您应该仔细考虑您希望从代码中获得的结果以及为什么它不能以这种方式工作。
答案 3 :(得分:1)
如果您尝试将字符串(可能是从用户输入)转换为局部变量,那么您最好使用if或case。
for (int i = 1; i <= 10; i++)
{
string key = "t" + i;
if (key == "t1")
{
f.WriteLine(t1);
}
else if (key == "t2")
{
f.WriteLine(t2);
}
}
或者以Tim 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]);
}
答案 4 :(得分:0)
更好地将字符串存储在List<string>
中,然后使用此方法:
File.WriteAllLines(filePath, lines);
它会将您的字符串列表存储在filePath
从字符串创建列表:
var lines = new List<string>{ t1, t2, t3, t4, t5, t6, t7, t8, t9, t10};