我正在从文件中读取行。我想把这些行放入一个字符串列表中,然后处理它们。我需要一种可以使用.add(line)将其添加到列表中的列表。
最好的方法是如何定义这个列表?
一旦数据在列表中,逐行迭代它的最佳方法是什么?
谢谢
我正在从文件中读取行。我想把这些行放入一个字符串列表中,然后处理它们。我需要一种可以使用.add(line)将其添加到列表中的列表。
最好的方法是如何定义这个列表?
一旦数据在列表中,逐行迭代它的最佳方法是什么?
谢谢
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
循环,但要小心。
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);
string[] lines=File.ReadAllLines("somefile.txt");
foreach(string line in lines)
{
Process(line);
}
可以做类似这样的事情
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中抄袭的。
如果文件很小,你可以采用其他人建议的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);
}
}
}
}
foreach (string line in Files.ReadAllLines("file"))
{
// ...
}
list(of T)
并将T设置为string
。 - Matt Ellen