我正在从文件中读取行。我想将这些行放入字符串列表中然后处理它们。我需要某种列表,我可以使用.add(line)添加到列表中。
定义列表的最佳方法是什么?
一旦数据在列表中,逐行迭代它的最佳方法是什么?
由于
答案 0 :(得分:3)
使用通用List<T>
,附带.Add
:
List<string> lines = new List<string>(File.ReadAllLines("your file"));
lines.Add("My new line!");
请注意System.IO.File
静态类上的静态帮助器方法。我不记得副手,但我认为它会返回一个字符串数组,您可以将其输入到列表的构造函数中。
要迭代,请使用foreach
构造:
foreach (string line in lines)
{
Console.WriteLine(line);
}
请注意,当您在列表上有一个打开的迭代器时(例如,使用foreach
),您无法修改该列表:
foreach (string line in lines)
{
Console.WriteLine(line);
lines.Add("Attempting a new line"); // throws an exception.
lines.Remove("Attempting a new line"); // throws an exception.
}
如果您希望能够同时修改和迭代,请使用for
循环, ,但要小心 。
答案 1 :(得分:1)
List<string> list = new List<string>(); // list creation
List<string> list2 = new List<string>(File.ReadAllLines("filename")) // instant reading
list.Add("Hello world"); // adding a string
foreach (string item in list) // iterating over a list
Console.WriteLine(item);
答案 2 :(得分:0)
使用File.ReadAllLines method和for
或foreach
迭代器
答案 3 :(得分:0)
您只能在一行中执行此操作:
foreach (string line in Files.ReadAllLines("file"))
{
// ...
}
答案 4 :(得分:0)
您可以使用File.ReadAllLines来读取整个文件,然后使用 foreach 循环来处理它们。例如:
string[] lines=File.ReadAllLines("somefile.txt");
foreach(string line in lines)
{
Process(line);
}
答案 5 :(得分:0)
可以做这样的事情
string path = "MyFile.txt";
string[] lines = File.ReadAllLines(path);
List<string> listOfLines = new List<string>();
foreach(string str in lines)
{
listOfLines.Add(str);
}
这个例子几乎从http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx#Y1113
解除了答案 6 :(得分:0)
如果文件很小,您可以执行其他人建议的ReadAllLines()方法。但是,对于大文件,这将表现不佳。
或者,您可以这样做:
class Program
{
static void Main(string[] args)
{
var myList = new List<string>;
using (var sw = new StreamReader(@"c:\foo.txt"))
{
while (true)
{
string line = sw.ReadLine();
if (line == null)
break;
myList.Add(line);
}
}
}
}