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

时间:2011-08-11 10:57:06

标签: c#

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

定义列表的最佳方法是什么?

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

由于

7 个答案:

答案 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 methodforforeach迭代器

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