如何在C#中创建字符串列表

3

我正在从文件中读取行。我想把这些行放入一个字符串列表中,然后处理它们。我需要一种可以使用.add(line)将其添加到列表中的列表。

最好的方法是如何定义这个列表?

一旦数据在列表中,逐行迭代它的最佳方法是什么?

谢谢


使用list(of T)并将T设置为string - Matt Ellen
7个回答

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

喜欢这个答案适用于list2行。这是一个很好的快速解决方法。 - Andy Hunt
说实话,我把它从其他答案中提取出来的,所以他们应该得到更多的荣誉 :) - Zruty

0
你可以使用File.ReadAllLines来读取整个文件,然后使用foreach循环来处理它们。例如:
string[] lines=File.ReadAllLines("somefile.txt");
foreach(string line in lines)
{
  Process(line);
}

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中抄袭的。


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

0

0
你可以用一行代码完成它:
foreach (string line in Files.ReadAllLines("file"))
{
    // ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接